プロセスがクラッシュしたときのメモリダンプ

プロセスがクラッシュしたときのダンプはユーザモードダンプで取得できる。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumpsというキーに設定する。

タイプ デフォルト 内容
DumpFolder REG_EXPAND_SZ %LOCALAPPDATA%\CrashDumps ダンプ保存先
DumpCount REG_DWORD 10 ダンプファイルの最大数
DumpType REG_DWORD 1 0:Custom dump, 1:Mini dump, 2:Full dump
CustomDumpFlags REG_DWORD カスタムダンプのオプション

CustomDumpFlagsはデフォルトでMiniDumpWithDataSegs | MiniDumpWithUnloadedModules | MiniDumpWithProcessThreadData

これらを設定することによって、ユーザモードダンプファイルを取得できる。

プロセスをクラッシュをテストする

BadAppというソフトでプロセスのクラッシュを再現できる。
実行するとDumpFolderにはBadApp.exe.2112.dmpというファイル名で生成されていた。

特定プロセスのみクラッシュダンプをとる

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\実行ファイル名.exeというキーに設定する。

再起動必要?

再起動しなくてもレジストリ設定を行えばすぐ反映される。

クラッシュしないプロセスのダンプをとる

クラッシュしないが意図しない挙動のプロセスのダンプをとりたいこともある。
タスクマネージャーのプロセス一覧から対象プロセスを右クリックするとダンプファイルの作成というメニューがあり、作成できる。
これはC:\Users\<ユーザ名>\AppData\Local\Temp\に生成される。