web-dev-qa-db-ja.com

アプリケーションは中断モードです-原因を特定できません

アプリケーションが終了すると、IDEが壊れることがあります。

これが発生すると、コールスタックは空になり、スレッドリストには情報を公開しないスレッドがいくつか表示されます。

「Debugger」-「Step into」を選択すると、IDEが終了/一見正常に終了するため、どのようにしてブレークの原因をさらに調査できるかわかりません。

[実行中のタスクを確認]をクリックしても、タスクは表示されません。 「実行を続ける」をクリックすると、一見正常にデバッグが終了します。 「診断ツールを表示」をクリックすると、「実行時に停止:実行時に停止」というイベントが表示されますが、これ以上通知されません。

スクリーンショットが添付されています。

この中断の原因を調べるにはどうすればよいですか?

enter image description here

編集:私はフォーラムのメンバーの一人が提案したことを試しましたが、それは私を助ける何かをもたらさないと思います。これはスクリーンショットです:

enter image description here

19
tmighty

問題を実際にデバッグする方法が見つかりませんでした。私はブルートフォースの方法で問題を解決しました:

エラーがなくなるまで、すべてのアセンブリとCOMオブジェクトを1つずつ削除しました。

私の場合、モジュール内にWithEventsを持つパブリックコントロールがありました。 VB.NETはそれをまったく好まなかったようです。これから、コントロールとそのwitheventをフォームに入れます。

ただし、主な問題は残ります。VisualStudioには、問題を簡単に切り分けるためのヘルプはありません。

3
tmighty

私のWebアプリケーションの1つで、同じ問題があり、何が間違っていたかを見つけるために、同様の問題を検索した後、ほとんどの場合、デバッグオプションを変更することを提案しました。そのため、一般的なデバッグオプションでは、2番目のオプション「1つのプロセスが中断したときにすべてのプロセスを中断する」と、ほぼ下部の「ネイティブの編集と続行を有効にする」をマークしました。 「変更を適用して続行」。

これにより、問題が発生した場所(ajaxが気に入らない文字列の不正な文字)でアプリがようやく停止し、値を評価して問題を見つけ、動作するまでコードを編集することができました。これが私のデバッガーオプションのスクリーンショットです。あなたのバグをキャッチしてください:)

デバッガオプション

6
Alan Warden

例外がライブラリの一部であるか、自分で作成していない何かの場合、例外が発生するコードを表示できない場合があります。以下が役立つ場合があります。

[デバッグ]> [オプション]> [全般]> [マイコードのみを有効にする]のチェックを外します

5
Alternatex

デバッガを使用しているときに、監視ウィンドウに移動し、擬似変数を使用して根本原因に関する情報を表示できます。特に便利なのは$exception

enter image description here

疑似変数 に関するドキュメントを確認してください。

3
Paweł Łukasik

これは、シングルスレッドのWinformsアプリケーションがメインスレッドでアクションを完了するのに60秒以上かかる場合にも発生します。

あまりにも長い処理中に、メインスレッドからの定期的な間隔でApplication.DoEvents()を呼び出すことで、汚い方法で解決しました。 Application.DoEvents呼び出しの間に発生する例外は、IDEで適切に処理されます。

2
Goodies

例外設定に移動し、「Magged Debugging Assistants」のチェックを外します enter image description here

2
user3578181

これは、一部のメソッドまたはコンストラクターにアクセスできない(プライベートまたは内部)ため、パブリックとして配置されるために発生する可能性があります。

XAMLはメソッドを呼び出してアプリケーションを起動する必要があります

0
impactro