C++ 为什么我的本地DLL在设置了\u NT\u SYMBOL\u路径后要永远加载?

C++ 为什么我的本地DLL在设置了\u NT\u SYMBOL\u路径后要永远加载?,c++,visual-studio,debug-symbols,symbol-server,C++,Visual Studio,Debug Symbols,Symbol Server,我已经设置了\u NT\u SYMBOL\u路径并将其指向 srv*c:\symbols*http://msdl.microsoft.com/download/symbols 启动调试器时,我注意到与Windows相关的DLL加载速度很快。然而,我们公司的DLL需要很长时间才能加载。当我去掉_NT_SYMBOL_PATH,重新启动VisualStudio时,所有东西都会很快加载(尽管我没有MS符号) 这几乎就像上面的符号服务器正在搜索我的内部公司dll的PDB,而不是首先检查它们是否存在于本地

我已经设置了\u NT\u SYMBOL\u路径并将其指向

srv*c:\symbols*http://msdl.microsoft.com/download/symbols
启动调试器时,我注意到与Windows相关的DLL加载速度很快。然而,我们公司的DLL需要很长时间才能加载。当我去掉_NT_SYMBOL_PATH,重新启动VisualStudio时,所有东西都会很快加载(尽管我没有MS符号)

这几乎就像上面的符号服务器正在搜索我的内部公司dll的PDB,而不是首先检查它们是否存在于本地。有些DLL我没有PDB。有些是我的解决方案的一部分,所以我在调试时构建它们,并且总是有PDB


Visual Studio如何搜索符号?我是否可以控制VisualStudio如何搜索符号?我可以明确地说,对于给定目录中的DLL,不需要搜索符号吗?是否有任何其他东西可能会拖慢符号加载的速度,或者我可以做些什么来加快加载过程?

Visual Studio在Visual Studio内部配置的任何路径之前搜索
\NT\u SYMBOL\u PATH
。这是调试引擎的一个“功能”。这意味着将在Microsoft的符号服务器上搜索您的符号

在Visual Studio 2010中,他们通过(如果已设置)在“调试符号”对话框中包含
\NT\u SYMBOL\u PATH
明确了这一点。不幸的是,这个条目

要解决此问题,请将您的符号服务器置于Microsoft文件之前的
\NT\u symbol\u路径中:


\u NT\u SYMBOL\u PATH=cache*C:\symbols\\mysymsvr\Symbols;SRV*C:\符号*http://msdl.microsoft.com/download/symbols

除了@Roger的正确答案

如果您在Visual Studio中调试,我会避免使用
\u NT\u SYMBOL\u PATH
环境变量,而使用Visual Studio设置

工具->选项->调试符号


在2010年,这允许您比原始环境变量route具有更大的粒度。例如,您可以筛选Visual Studio在默认情况下尝试为其加载符号的DLL列表。这在大型项目中非常有用,因为您只对DLL的一小部分感兴趣,并且希望减少加载时间。

您会注意到,在VS2010中,如果设置了\n t\u SYMBOL\u PATH,它将显示在调试符号列表的顶部,并且无法移动。看见