3

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

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

启动调试器时,我注意到与 Windows 相关的 dll 加载速度很快。但是,我们公司的 dll 加载时间非常长。当我摆脱 _NT_SYMBOL_PATH 时,重新启动 Visual Studio,然后一切都加载得很快(尽管我没有 MS 符号)。

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

Visual Studio 如何搜索符号?无论如何我可以控制视觉工作室如何搜索符号?我可以明确地说,对于来自给定目录的 dll,不会搜索符号吗?还有什么其他可能会降低符号的加载速度或我可以做些什么来加快这个过程吗?

4

2 回答 2

9

Visual Studio在 Visual Studio 中配置的任何路径_NT_SYMBOL_PATH 之前进行搜索。这是调试引擎的一个“特性”。这意味着将在 Microsoft 的符号服务器中搜索您的符号。

_NT_SYMBOL_PATH在 Visual Studio 2010 中,他们通过(如果已设置)包括在调试符号对话框中明确了这一点。不幸的是,该条目不能向上或向下移动

为了解决这个问题,把你的符号服务器放在微软的东西_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环境变量来支持使用 Visual Studio 设置。

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

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

于 2010-08-23T15:33:16.283 回答