2

追跡が非常に難しいバグがあります。これは、デバッガーが接続されていない場合にのみ発生するものの1つです:)

私は MiniDumpWriteDump() をピンボークしましたが、それは事後にデバッグできる .dmp ファイルを作成するのに非常にうまく機能します。

しかし、私は次のようなことをしています

try
{
    foo();
}
catch(Exception)
{
    CreateMiniDump()
}

これはうまく機能しますが、必要なコールスタックが得られません。例外がスローされた時点で、(すべてのメンバー変数を含む) コールスタックを保持したいと思います。

これは可能ですか?例外で最初のディブを取得するメカニズムはありますか? ミニダンプを作成してコールスタックなどを保存できるようにするにはどうすればよいですか?

4

2 に答える 2

2

にサブスクライブしAppDomain.CurrentDomain.UnhandledExceptionて、例外が巻き戻されようとしているときに発生するイベントを取得できます。発生したとき、元のコンテキストはまだスタックにあります。ミニダンプ作成コードをイベント ハンドラー内に配置できます。

于 2012-09-07T23:40:22.173 に答える
2

.NET 4 以降では、 FirstChanceExceptionイベントをサブスクライブできます。

于 2012-09-07T23:42:24.410 に答える