5

Windows サービスがクラッシュしたときに、そのサービスのフル メモリ ダンプを作成することはできますか? 明らかに、失敗したプロセスのメモリ ダンプを収集できるよく知られている事後分析デバッガーがあります。しかし、Windows サービスの問題は、ユーザー コンテキストではなく、システム コンテキスト内で実行されていることです。誰でも私を助けることができますか?

今まで、WinDbgで試しました:

  • WinDbg -I を実行して、WinDbg をデフォルトの事後分析デバッガーとして設定しました。
  • レジストリの両方の場所 (HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug と HKLM\SOFTWARE\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\AeDebug) に、Auto と Debugger の 2 つのエントリが存在することを確認しました。
  • デバッガーのエントリを "Path\WinDbg.exe" -p %ld –c ".dump /ma /u D:\CrashDump.dmp" -e %ld –g に変更して、起動時に自動的にメモリ ダンプを書き込むように WinDbg を構成しました。
  • 管理者権限の有無にかかわらず、WinDbg がメモリ ダンプ ファイルのターゲットの場所に対する権限を持っていることを確認しました。

しかし、うまくいきません。:(

起動後に意図的にクラッシュする通常のユーザー モード アプリケーションを作成すると、WinDbg がポップアップし、.dmp ファイルがターゲットの場所に自動的に書き込まれます。しかし、私のサービスがクラッシュしても、クラッシュしません。タスク マネージャー内で、サービスのプロセスがクラッシュした後に WinDbg が開始されることを確認できますが、どちらもダンプ ファイルなしでリストに残ります。

4

1 に答える 1

4

AeDebugキーの Autoが1に設定されていることを確認します。また、windbg コマンド ラインを次のように変更します。"Path\WinDbg.exe" -p %ld –c ".dump /ma /u D:\CrashDump.dmp;qd" -e %ld –G

デバッグ対象から切り離さない場合、デバッガは次のコマンドを待機します。また、-G オプションは、プロセスが終了した直後にデバッガーを閉じます。構成が簡単で、おそらくそのようなシナリオにより適しているのは、 sysinternalsの procdump です。完全なメモリ ダンプを作成することもでき、次のprocdump -ma -i D:\crashdumpコマンドでインストールできます。

于 2013-12-16T21:52:49.677 に答える