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 が開始されることを確認できますが、どちらもダンプ ファイルなしでリストに残ります。