0

VS 2010 の出力ウィンドウに書き込まれたメッセージをキャプチャして、バグにつながるメッセージを傍受しようとします。

傍受しようとしているメッセージ:

A first chance exception of type 'System.Runtime.InteropServices.SEHException' occurred in OpenNETCF.Desktop.Communication.dll
Disconnect

その後、デバイスを接続すると、例外なくアプリがフリーズします。

出力ウィンドウのメッセージをキャプチャしたり、文字列にリダイレクトしたりするにはどうすればよいですか? このアプリを本番モードで使用するときにインターセプトできますか?

コンソール メッセージをキャプチャしようとしましたが、 app から呼び出された console.writeline 以外に何も得られなかったので、これらのメッセージは console.writeline 呼び出しではないと思います。

4

1 に答える 1

0

アプリケーションをデバッグしている場合、特定の例外が最初に発生したとき (1 回目の例外/スロー) にデバッガーを中断させるには、Runtime.InteropServices の例外セット全体ではなく、必要な特定の例外だけをチェックすることができます。

以下のスクリーンショットを参照してください。

ここに画像の説明を入力

アプリケーションがデバッガーで現在実行されていない場合は、「プロセスにアタッチ」を使用して、既に実行中のプロセスにデバッガーをアタッチできます...ただし、これは通常、運用環境では行われません。

本番環境でアプリケーションを分析したい場合、つまり、アプリケーションを停止したり、デバッガーで実行したりできない場合は、例外が発生したときにプロセスの「ダンプ」を作成するのが最善の方法です。 ...保存した .dmp ファイルを読み込んで、WinDBG または Visual Studio でオフラインで分析できます。

最適な設定方法は、DebugDiag を使用して、例外が発生したときに "フル ダンプ" ファイルが自動的に作成されるようにすることです。

タスク マネージャーでプロセスを右クリックし、[ダンプ ファイルの作成] を実行して、アプリケーション プロセスの "ミニ ダンプ" を手動で行うこともできます。ただし、手動で行うと、例外の時間に近い状態をキャプチャするのがはるかに遅くなり、「ミニダンプ」はフルダンプよりも役に立ちません。

実稼働環境での問題を診断する方法については、ここに優れたチュートリアルがあります。

于 2012-08-11T19:19:28.103 に答える