DebugDiag を使用して、処理されない .NET 例外の情報を含むダンプを作成しようとしています。
ダンプ ファイルの作成は、実行中のコードに依存しているようですが、その理由はわかりません。
これらは私が取ったステップです:
例外
DebugDiagTest
をスローする次のコードで名前を付けた単純なコンソール アプリケーションを準備します。InvalidOperationException
using System; namespace DebugDiagTest { class Program { static void Main(string[] args) { if (ShouldAwaitKeyPress(args)) Console.ReadLine(); Throw(); } static void Throw() { throw new InvalidOperationException(); } static bool ShouldAwaitKeyPress(string[] args) { var shouldAwaitKeyPress = false; if (args.Length > 0) { bool.TryParse(args[0], out shouldAwaitKeyPress); } return shouldAwaitKeyPress; } } }
でコンパイルして実行し
DebugDiagTest.exe true
ます。まだキーを押さないでください。キーが押されるまで待ちます (ステップ 4)。DebugDiag 例外ルールを準備します (この記事に従うことができます)。
実行中の に戻り、
DebugDiagTest.exe
何らかのキーを押してクラッシュさせます。に移動する
C:\Program Files\DebugDiag\Logs\Crash rule for all instances of DebugDiagTest.exe
と、ファイルが表示.dmp
されます。で実行し
DebugDiagTest.exe false
、再び に移動すると、ファイルが作成されていないC:\Program Files\DebugDiag\Logs\Crash rule for all instances of DebugDiagTest.exe
ことがわかります。.dmp
いつでも再実行できるDebugDiagTest.exe true
ようになり、毎回ダンプ ファイルが作成されることを確認できます。ただし、再実行してDebugDiagTest.exe false
もダンプ ファイルは作成されません。
私の質問:
実行DebugDiagTest.exe true
するとダンプが作成されるのに、作成されないのはなぜDebugDiagTest.exe false
ですか?