Dumpファイルとは
1. はじめに
プログラムの実装が完了し、テスト工程になると、不可解な事象に頭を悩ます。例えば、あるタイミングでボタンをクリックすると、プログラムがハングするというようなものである。
多くの事象は、担当者にログを提出すれば問題ないが、レアケースの場合は、開発側で詳細に調べてもらう必要がある。このような場合は、開発にDumpファイルを提示し、確認を依頼する。
2. 制限事項
制限事項について下記に示す。
OS:Windows11
開発環境:Visual Studio 2022
ビルド構成:デバッグビルド
3. Dumpファイルとは
Dumpファイルとは、プログラムが異常終了した際に、その時点のプログラムの状態を記録するファイルである(図1)。
![](https://assets.st-note.com/img/1738386800-G3fYSg8JQcjzKkyL1APqnNTa.png?width=1200)
Dumpファイルには、メモリの内容、実行中のスレッドの状態が入っている。そのため、開発担当にDumpファイルを渡し、状況説明を容易に行うことができる。
4. Visual StudioでDumpファイルを作成する
実際に、Visual StudioでDumpファイルを作成する。ここでは、意図的に0除算の例外を発生させ、ダンプファイルを作成する。
class Program
{
public static void Main(string[] args)
{
int num = 0;
int result = 0;
//10 / numの計算をする
result = 10 / num;
}
}
デバッグあり実行すると、0除算の例外が発生する。
![](https://assets.st-note.com/img/1738476411-6CqBu8IYLsdctahopvFEKrb7.png?width=1200)
その状態で、「デバッグ」→「名前を付けてダンプを保存」を選択する。
![](https://assets.st-note.com/img/1738386992-gdLehljxtAM9mCf5WOUqkvnz.png?width=1200)
保存すると、*.dmpというファイルを出力する。
![](https://assets.st-note.com/img/1738387797-w4rJxVoUnDzepK1I8HdckFWB.png)
なお、容量を確認すると、数行のプログラムでも100MBほどあるようだ。
5. 中身を確認する
Dumpファイルが保存できたら、Visual Studioで開く。
![](https://assets.st-note.com/img/1738387699-fEz1jxHvCreb3IUPlK2WOQiy.png?width=1200)
Dumpファイルを開くと、問題が発生したプロセス名などが把握できる画面を表示する。
この画面の右側に「アクション」という項目がある。
![](https://assets.st-note.com/img/1738387885-XwGt1x5MCIrRhF2b8eWHdcYq.png)
アクションでデバッグを行うことで、異常時の状態を再現できる。この中でも、今回はC#であるため、「マネージドのみでデバッグ」を選択する。
![](https://assets.st-note.com/img/1738388068-d6HIjXRskm0KJZzxibpLDcVr.png?width=1200)
実行すると、先ほどと同じ、0除算が発生することがわかる。また、クイックウォッチで変数の中身も確認できる。
![](https://assets.st-note.com/img/1738389121-m8b7NltD1FWIqEn39deBKjaw.png)
したがって、問題発生時にdmpファイルに保存しておき、誰かに共有するといったことが可能である。
6. おわりに
今回は、Dumpファイルの作成方法と、確認方法をまとめた。Dumpファイルを作成することで、異常時の状態をファイルとして保存できることがわかった。また、Visual Studio上で、状態を再現できることがわかった。そのため、テスト担当者がDumpファイルを作成し、開発側に伝える際に使用すると便利だと感じた。
発展として、ロギング用の関数で、Dumpを出力できるようにすると、異常発生時の状態を記憶しやすくなるため便利であると感じた。