CrashFinder

アプリケーションの動作確認をしている時に実行時エラーが発生したのですが、デバッガで止まるところがどうも怪しく原因がさっぱりわからないという事態に陥ってしまったので、エラーメッセージに含まれるアドレスから本当にエラーが発生している箇所を探そうと思い立ちました。MAPファイルを使用するなどすればいいそうですが、この年にして(?)こういうことをした経験が今までなかったので、以下の本を参考に勉強してみることにしました。

.NET&Windowsプログラマのためのデバッグテクニック徹底解説 (マイクロソフト公式解説書)

.NET&Windowsプログラマのためのデバッグテクニック徹底解説 (マイクロソフト公式解説書)

わかりやすく解説されているのですが、手動で探すのはやっぱり面倒だなぁ……ということで、この本でも紹介されているCrashFinderというアプリケーションを使ってみることに。これは問題のあるバイナリ(EXE, DLL等)を登録してから、エラーの発生したアドレスを入力することでそのアドレスが指している関数を検索して教えてくれるというツールで、とても簡単に使えました。実行ファイルは付録のCDにも含まれていますが、以下のページでも配布されています。

Bugslayer, MSJ, April 1998

自分も付録をどこかにやってしまったのでここからダウンロードしました。

冒頭の実行時エラーですが、このツールによって見事原因を発見し、解決することができました。行番号まで教えてくれるので一目瞭然でした。これでまた下らないバグに悩む時間が減りそうです(ほんとにしょうもないバグだったorz)。