设置_NT_SYMBOL_PATH后,为什么我的本地dll会永远加载?

时间:2010-08-23 15:10:06

标签: c++ visual-studio debug-symbols symbol-server

我已经设置了_NT_SYMBOL_PATH并将其指向了

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

启动调试器时,我注意到Windows相关的dll加载速度很快。然而,我们公司的dll正在花费很长时间才能加载。当我摆脱_NT_SYMBOL_PATH,重新启动visual studio,然后一切都很快加载(尽管我没有MS符号)。

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

Visual Studio如何搜索符号?无论如何,我可以控制visual studio如何搜索符号?我可以明确地说,对于来自给定目录的dll,不要搜索符号吗?还有什么可能会拖累符号的加载速度或我可以采取的任何措施来加速这个过程吗?

2 个答案:

答案 0 :(得分:9)

Visual Studio在之前搜索在Visual Studio中配置的任何路径。这是调试引擎的“功能”。这意味着将搜索Microsoft的符号服务器以查找符号。

在Visual Studio 2010中,他们在调试符号对话框中通过(如果已设置)显式包含_NT_SYMBOL_PATH。很遗憾,此条目cannot be moved up or down

为了解决这个问题,请将您的符号服务器放在_NT_SYMBOL_PATH 之前 Microsoft的东西:

_NT_SYMBOL_PATH

答案 1 :(得分:2)

除了@Roger的正确答案。

如果您在Visual Studio中进行调试,我将避免使用_NT_SYMBOL_PATH环境变量来支持使用Visual Studio设置。

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

2010年,它允许您比原始环境变量路径更精细。例如,您可以过滤掉Visual Studio在默认情况下尝试加载符号的DLL列表。这在大型项目中非常有价值,在这些项目中,您只对DLL的一小部分内容感兴趣并希望减少加载时间。