3

_NT_SYMBOL_PATHを設定し、それをポイントしました

srv*c:\symbols*http://msdl.microsoft.com/download/symbols

デバッガーを起動すると、Windows関連のdllがすぐに読み込まれることに気付きました。ただし、当社のdllの読み込みには非常に長い時間がかかります。_NT_SYMBOL_PATHを削除したら、Visual Studioを再起動すると、すべてが非常に高速に読み込まれます(MSシンボルはありませんが)。

上記のシンボルサーバーが、ローカルに存在するかどうかを最初に確認するのではなく、社内のdllのpdbsを検索しているようです。私がpdbを持っていないこれらのdllのいくつか。一部は私のソリューションの一部なので、デバッグ時にビルドし、常にpdbを使用します。

Visual Studioはどのようにシンボルを検索していますか?とにかく、Visual Studioがシンボルを検索する方法を制御できますか?特定のディレクトリのdllについては、シンボルを検索しないことを明示的に言うことはできますか?シンボルのロード速度を下げる可能性のあるものや、プロセスを高速化するためにできることは他にありますか?

4

2 に答える 2

9

Visual Studioは、VisualStudio内で構成されたパスの_NT_SYMBOL_PATH 前に検索します。これは、デバッグエンジンの「機能」です。これは、Microsoftのシンボルサーバーでシンボルが検索されることを意味します。

_NT_SYMBOL_PATHVisual Studio 2010では、(設定されている場合は) [シンボルのデバッグ]ダイアログに含めることで、これを明示的にしています。残念ながら、このエントリは上下に移動できません

これを回避するには、Microsoftのものの_NT_SYMBOL_PATH 前にシンボルサーバーを配置します。

_NT_SYMBOL_PATH=cache*C:\symbols;\\mysymsvr\Symbols;SRV*C:\symbols*http://msdl.microsoft.com/download/symbols

于 2010-08-23T15:19:25.970 に答える
2

@Rogerの正解に加えて。

Visual Studioでデバッグしている場合は、_NT_SYMBOL_PATH環境変数を使用せずに、VisualStudioの設定を使用します。

[ツール]->[オプション]->[シンボルのデバッグ]

2010年には、これにより、生の環境変数ルートよりも細かく設定できます。たとえば、VisualStudioがデフォルトでシンボルを読み込もうとするDLLのリストをフィルターで絞り込むことができます。これは、DLLの小さなサブセットのみに関心があり、ロード時間を短縮したい大規模なプロジェクトで非常に役立ちます。

于 2010-08-23T15:33:16.283 に答える