ダンプファイルに触れて

ダンプファイルに触れて

はじめに

始めまして。応用技術部の立石と申します。

ダンプファイルに触れる機会があったのですが、それまで扱ったことがなかったため、ダンプファイルとはどのようなものか、どのように扱うものなのかなど、気になった点などをまとめていきます。

ダンプファイルとは

今回ここで扱うダンプファイルは、 Visual Studio で実行中のプログラムが中断した際「デバッグ → 名前をつけてダンプを保存」で出力されるものです。

このダンプファイルを用いることで、プログラムが中断した状態を再現することが出来、どの行でプログラムが中断したのか、変数はどうなっていたのかなどが分かります。そのため、自分が実行中に中断した部分を別の誰かに見てもらったり、別の誰かが実行中に中断した部分を確認できるなど、デバッグ作業の助けになります。

ダンプファイル使用例

次のようなプログラムを作成し実行してみます。今回の例では8行目の例外で中断されます。

throw で投げられた例外で中断している

中断されたまま(デバッグを終了せずに)上のメニューバーから デバッグ → 名前をつけてダンプを保存 とすることで、中断されている今の状態のダンプファイルを生成して保存することができます。

ダンプファイル出力

生成されたダンプファイルを Visual Studio にドラッグ&ドロップすることで以下の図のように読み込むことができます。
ネイティブのみでデバッグを選択することで、このダンプファイルを生成したときと同様の状態を再現することができます。

生成したダンプファイルを読み込んだ

また、エラー等で中断された時だけでなく、自分で設定したブレークポイントでもダンプファイルを保存することができます。

気になった点

ダンプファイルとして出力することで中断された状況を保存・再現できていますが、どのようにして状況を保存しているのか、ダンプファイルの中身がどの様になっているのかなどが気になりました。

終わりに

今まで自分以外が発見して報告されたバグのデバッグ作業をどのように行うのか、あまり考えてきませんでした。些細な違いでも手順に違いがあると再現性がないバグもあることを考えると、問題の起こった状態をそのまま再現できるダンプファイルの有用性に気付かされました。

おまけ

初めて触った以降ダンプファイルを扱うことはありませんでした。

また本題とはやや逸れますが、作業中の状態とリリース時の状態の切り替えを支えてくれるバージョン管理ソフトのありがたみを感じました。

この記事をシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です