11月2日(金)の夜、MSDNオフライン 第66回「アプリケーションのPostmortemデバッグの実際」に参加してきました。ダンプファイルの取り方、解析の仕方に関する解説です。もちろん、90分しかないので、あくまでも導入。
ダンプファイルとの付き合いは、Windows 3.1のワトソン博士の診断結果以来ですが、実はこれまで、表面的な付き合いしかしたことがなくてですね(^^;)、是非是非、これを機会に仲良くしたいと考えております(いえ、わざわざ出てきていただく必要はないです > ダンプ)。
で、今回のセミナーで、本題じゃないのに予想外に「なるほど」だったこと。ダンプ以前の問題として、事前準備をしっかりしておきましょうという点。
- ビルドに責任を持つエンジニアを置く。
- 毎日ビルドする。
- イメージファイルにはバージョンリソースを必ず埋め込む。
- シンボルファイルをすべて保存する。
や、世間的には当たり前なのかもしれないですけど、私の周りではそうでもないです。
それと、デバッグでありがちな「printf埋め込み」を使わずにアプリケーションの動きをトレースする方法も、いくつか紹介されました。機能があるのは知っていても、実装しようとする機能そのものではないだけに、どうしてもリファレンスの参照が後手に回ってしまい、断片的な知識しかありません。この辺をもっと詳しく説明するようなセミナーがあると、さらに嬉しい。
で、ここまでが前置きで、ダンプの取り方。そもそも今まで、ダンプを自分で能動的に採る方法を知らなくて、何から手を付ければいいのか分からなかったんですが、このセミナーで、いろいろなダンプツールを紹介されました(Vistaにはワトソン博士いないのね……)。その中でも、今回のセミナーで中心に扱われていて、便利そうなのが、Userdump。一次例外、二次例外のどちらもトリガーにできるということで、(間違えると死にそうですけど)うまく使えば、自分とこで作ったんじゃないアプリケーションで障害が起こった時も、原因究明の糸口がつかめるかも。
今まで、アプリケーションのデバッグというと、デバッガでステップ実行して、レベルしかしてなかったんですが、これを機会に一歩前進したいですね。