アプリケーションの動作確認をしている時に実行時エラーが発生したのですが、デバッガで止まるところがどうも怪しく原因がさっぱりわからないという事態に陥ってしまったので、エラーメッセージに含まれるアドレスから本当にエラーが発生している箇所を探そうと思い立ちました。MAPファイルを使用するなどすればいいそうですが、この年にして(?)こういうことをした経験が今までなかったので、以下の本を参考に勉強してみることにしました。
.NET&Windowsプログラマのためのデバッグテクニック徹底解説 (マイクロソフト公式解説書)
- 作者: ジョンロビンズ,John Robbins,豊田孝
- 出版社/メーカー: 日経BPソフトプレス
- 発売日: 2003/10/28
- メディア: 単行本
- クリック: 40回
- この商品を含むブログ (31件) を見る
わかりやすく解説されているのですが、手動で探すのはやっぱり面倒だなぁ……ということで、この本でも紹介されているCrashFinderというアプリケーションを使ってみることに。これは問題のあるバイナリ(EXE, DLL等)を登録してから、エラーの発生したアドレスを入力することでそのアドレスが指している関数を検索して教えてくれるというツールで、とても簡単に使えました。実行ファイルは付録のCDにも含まれていますが、以下のページでも配布されています。
自分も付録をどこかにやってしまったのでここからダウンロードしました。
冒頭の実行時エラーですが、このツールによって見事原因を発見し、解決することができました。行番号まで教えてくれるので一目瞭然でした。これでまた下らないバグに悩む時間が減りそうです(ほんとにしょうもないバグだったorz)。