OSデバッグシンボル

OSをデバッグするためのシンボル等を含んだPDBファイル(Program Databaseファイル)がマイクロソフトから提供されている。


このファイルを使うと、バイナリしか提供されていないOSモジュールのデバッグができるようになったりするのだが今回は置いておいて。
いちばん簡単に恩恵が受けられるシナリオとしては、Process Explorerでのスレッドのコールスタック情報がある。シンボルを参照することにより直値アドレスから内部シンボル名に変換されるため、よりコールスタックが直感的にわかりやすくなる。(というか直値アドレスだけだと、さすがに意味がわからないことが多い。逆汗して処理を確認したりしないと)


設定方法は簡単。

(1)適切なOSのシンボルファイルをマイクロソフトサイト(Download Windows Symbol Packages)よりダウンロードし、インストールする。
(2)Process Explorerのメニューから、[Options]→[Configure Symbols]を起動して、Symbols path欄に(1)のインストール先を設定する。

以上。


これでスレッドコールスタック表示時に自動的にシンボル参照が行われ、直値アドレスからシンボル名へ変換されて表示されるようになる。


シンボルファイルは、現時点で

が用意されている。
各OSごとに更にそれぞれサービスパックなどで細かい分類があるので、適切なものをインストールする必要がある。
シンボルファイルは完全にビルドモジュールと合致したものでないと意味が無いので、間違えないように。


XPユーザであれば通常は「Windows XP with Service Pack 2 x86 retail symbols, all languages」を入れることになるだろうが、それでも SP2 以降にパッチがあたったモジュールについてはシンボルが適用されないため、一部モジュールはその恩恵にあずかれないようだ。(頻繁にアップデートされるIE関連とか)