【だんぷふぁいる】

ダンプファイル とは?

💡 クラッシュ時のメモリの「スナップショット」、障害原因を調べる手がかり
📌 このページのポイント
ダンプファイルの仕組み システム障害 ブルースクリーン アプリクラッシュ ①保存 メモリ内容 障害時の状態を ファイルに書き出す ②生成 ダンプファイル .dmp / .mdmp 障害時のスナップショット ③解析 デバッガーで解析 原因のモジュール・アドレス特定 WinDbg / Visual Studio ダンプファイルに含まれる情報 ・レジスタ / スタック / メモリ内容 ・ロード済みモジュール / スレッド状態 障害発生 → メモリ状態を保存 → 後から原因を調査できる
ダンプファイルによる障害解析のイメージ
ひよこ ひよこ

ダンプファイルって何?

ペンギン先生 ペンギン先生

プログラムやOSがクラッシュした瞬間の「メモリの状態の写真」だよ。Windowsブルースクリーン(BSOD)時にC:\Windows\Minidump\に.dmpファイルが作られる。このファイルを解析すると「なぜクラッシュしたか」の手がかりが得られる。

ひよこ ひよこ

どうやって解析するの?

ペンギン先生 ペンギン先生

WindowsはWinDbg(Microsoftのデバッガ)でダンプファイルを開く。「!analyze -v」コマンドでクラッシュの原因が自動分析される。原因はドライバのバグ・メモリ不良・ソフトウェアの競合など様々。

ひよこ ひよこ

おもしろい!Linuxのコアダンプって?

ペンギン先生 ペンギン先生

Linuxでもプロセスがクラッシュするとコアダンプ(coreファイル)が生成される。gdbというデバッガで解析できる。「gdb ./myapp core」でクラッシュ時のスタックトレースや変数の値を確認できる。

ひよこ ひよこ

ブルースクリーンが出たとき、ダンプファイルはどこにあるの?

ペンギン先生 ペンギン先生

Windowsデフォルトでは「C:\Windows\Minidump」フォルダに小さなダンプ(ミニダンプ)が保存されるよ。完全メモリダンプは「C:\Windows\MEMORY.DMP」に保存されるけど、メモリ容量分のファイルサイズになるから設定で無効にしている場合も多いんだ。実はMicrosoftの「WinDbg」は無料で使えるダンプ解析ツールで、「!analyze -v」コマンド一発で原因の候補を自動分析してくれるよ。ドライバーの問題が原因の場合はドライバーファイル名まで特定してくれるから、カーネルデバッグの入門としておすすめだね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ダンプファイルって出てきたら「プログラムやOSがクラッシュしたときに生成されるデバッグ用のメモリダンプファイル」と思えばOK!
📖 おまけ:英語の意味
「Dump File」 = 吐き出したデータのファイル
💬 「dump」は「投げ捨てる・吐き出す」という意味。メモリの内容を「そのまま吐き出したファイル」というイメージ
← 用語集にもどる