VC でデバッグ時にシンボルの読み込みに失敗してデバッグに支障をきたす


229,565

Yesterday: 24 Today: 7

connected: via IPv4

VC でデバッグ時にシンボルの読み込みに失敗してデバッグに支障をきたす

注意:
VC7.1(2003), VC8(2005) でのデバッグ情報の読み込みで発生するようになっています。
古い VC7.0(2002), VC6 では効果が無いとおもいます。


症状

VC7.1, 特に VC8 で作成したバイナリを実行すると「*.dll を読み込みました。シンボルが読み込まれていません。」 と出力ウィンドウに表示されるまで時間が掛かる

対処

VC7.1 の場合 C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\symsrv.ini
VC8 の場合 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\symsrv.ini
ファイルを作成してください。

作成したファイル内には

[Exclusions]
hoge.*
のようにシンボルを探しに行って時間が掛かっているファイルを記述してください。 (自分がビルドできるファイルの場合はビルドしたディレクトリにデバッグファイルがあるかどうか確認するようにしてここに記述しないようにしてください。)

背景

VC7.1 では環境変数「_NT_SYMBOL_PATH」を設定している場合、VC8 ではほぼ標準(デバッグ開始時に Yes のボタンを押した場合)で アプリがDLLなどを読み込むとデバッグシンボルを探しに行くのですが、インターネット経由で読み込みに行くようになっています。
ローカルにシンボルがある場合はまだ有る程度での時間で制御がデバッガに帰ってくるのですが、 シンボルがローカル、インターネットに無い場合にものすごく時間が掛かるようになりました。

VC7.1 の場合は最近顕著に遅くなっております。VC7.1sp1 内部のシンボルサーチエンジンがバージョンアップされているのではないかと思います。
可能であればバックアップをとった上で「C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\symsrv.dll」を「Debugging Tools for Windows」に付属している最新のものに置き換えるとシンボル解決の時間が改善されます。


last update at 2010/11/09 19:17:07