Dumpファイルとは

1. はじめに

 プログラムの実装が完了し、テスト工程になると、不可解な事象に頭を悩ます。例えば、あるタイミングでボタンをクリックすると、プログラムがハングするというようなものである。

 多くの事象は、担当者にログを提出すれば問題ないが、レアケースの場合は、開発側で詳細に調べてもらう必要がある。このような場合は、開発にDumpファイルを提示し、確認を依頼する。

2. 制限事項

 制限事項について下記に示す。

OS:Windows11
開発環境:Visual Studio 2022
ビルド構成:デバッグビルド

3. Dumpファイルとは

 Dumpファイルとは、プログラムが異常終了した際に、その時点のプログラムの状態を記録するファイルである(図1)。

図1 Dumpファイルのイメージ

 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除算の例外が発生する。

 その状態で、「デバッグ」→「名前を付けてダンプを保存」を選択する。

 保存すると、*.dmpというファイルを出力する。

 なお、容量を確認すると、数行のプログラムでも100MBほどあるようだ。

5. 中身を確認する

 Dumpファイルが保存できたら、Visual Studioで開く。

 Dumpファイルを開くと、問題が発生したプロセス名などが把握できる画面を表示する。

 この画面の右側に「アクション」という項目がある。

 アクションでデバッグを行うことで、異常時の状態を再現できる。この中でも、今回はC#であるため、「マネージドのみでデバッグ」を選択する。

 実行すると、先ほどと同じ、0除算が発生することがわかる。また、クイックウォッチで変数の中身も確認できる。

 したがって、問題発生時にdmpファイルに保存しておき、誰かに共有するといったことが可能である。

6. おわりに

 今回は、Dumpファイルの作成方法と、確認方法をまとめた。Dumpファイルを作成することで、異常時の状態をファイルとして保存できることがわかった。また、Visual Studio上で、状態を再現できることがわかった。そのため、テスト担当者がDumpファイルを作成し、開発側に伝える際に使用すると便利だと感じた。

 発展として、ロギング用の関数で、Dumpを出力できるようにすると、異常発生時の状態を記憶しやすくなるため便利であると感じた。

いいなと思ったら応援しよう!