home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

C言語系/memos/VC++/13, _NT_SYMBOL_PATH環境変数に注意

作成日: 2011-02-14 14:49:17   /   last updated at: 2011-04-02 16:20:56
カテゴリ: C言語 WinDBG Windows プログラミング 

"Debugging Tools for Windows"のwindbgなどを使い始めると、_NT_SYMBOL_PATH環境変数をシステムに設定したりすると思います。
この環境変数ですが、Visual C++ もちゃっかり使ってたりします。
で、値の書き方によってはVC++側でシンボルサーバーまで読みに行ったりローカルキャッシュからの検索などが思うようにスムーズに動かず、デバッグ実行時に数分以上の遅延が発生する場合があります。
書き方によってはVC++側でも素早くローカルキャッシュを見に行ってくれます。

というわけで、もし _NT_SYMBOL_PATH 環境変数を設定したらやたらVC++側のデバッグ実行が遅くなった、という人は書き方を工夫してみてください。

自分の場合、windbgの勉強中にこういうふうに設定したのですが・・・

cache*C:\in_vitro\tmp\symcache;srv*C:\in_vitro\tmp\awd_symstore\symstore.pri; \
  srv*http://msdl.microsoft.com/download/symbols

VC++側ではやたらと遅延が発生してしまいました。"cache"を明示したり、";"で区切ったりしたのがいけなかったのでしょうか?→ 誤解してました。cacheが効かない+ローカルキャッシュとシンボルサーバの区切り文字を混同してました。 技術/Windows/WinDbgメモ 参照。

試行錯誤してこんなふうに直してみたら、windbgもVC++側も双方、すんなり動いてくれました。

srv*C:\in_vitro\tmp\symcache*C:\in_vitro\tmp\awd_symstore\symstore.pri; \
  http://msdl.microsoft.com/download/symbols

実験環境:

Win7 (x86,32bit) 日本語版
Visual C++ 2008 Express Edition SP1
Windows SDK v7.0

参考:


original url: https://www.glamenv-septzen.net/view/920