c++ - 为什么我的本地 dll 在设置 _NT_SYMBOL_PATH 后永远加载?

标签 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 的 pdb,而不是首先检查它们是否存在于本地。其中一些 dll 我没有 pdb。有些是我的解决方案的一部分,所以我在调试时构建它们并且总是有 pdb。

Visual Studio 如何搜索符号?无论如何我可以控制 visual studio 如何搜索符号?我可以明确地说,对于给定目录中的 dll 不搜索符号吗?是否有任何其他因素可能会降低符号的加载速度或我可以采取哪些措施来加快该过程?

最佳答案

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

在 Visual Studio 2010 中,他们通过在“调试符号”对话框中包含 _NT_SYMBOL_PATH(如果已设置)使其显式化。不幸的是,这个条目cannot be moved up or down .

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

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

关于c++ - 为什么我的本地 dll 在设置 _NT_SYMBOL_PATH 后永远加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3548881/

相关文章:

c++ - 如何在 OpenCV 中查找视频的长度?

visual-studio - 禁用但不卸载 Resharper 4.x 及以上版本

c++ - 您可以从调试编译的二进制文件中检索源代码吗?

c++ - 哪个更好 : NULL or false?

c++ - 将地板截断为小数点后三位 C++

visual-studio - 是否可以在 Visual Studio 的堆栈中复制和粘贴文本?

.net - DebuggerDisplay 属性是否可以应用于不属于自己的类型?

gdb - 在 GDB 中调试使用 MinGW32 编译的 Ada 应用程序

c++ - VS 2013/Zi Compiler Option 使静态库的大小加倍

c++ - 嵌套模板类型的部分特化在 VC++ 2012 编译器中生成 "internal error"