【问题标题】:Why are my local dlls taking forever to load after setting _NT_SYMBOL_PATH?为什么设置 _NT_SYMBOL_PATH 后我的本地 dll 需要永远加载?
【发布时间】:2010-08-23 15:10:06
【问题描述】:

我已设置 _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,不会搜索符号吗?还有什么其他可能会降低符号的加载速度或我可以做些什么来加快这个过程吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      除了@Roger的正确答案。

      如果您在 Visual Studio 中进行调试,我会避免使用 _NT_SYMBOL_PATH 环境变量,而是使用 Visual Studio 设置。

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 2020-06-24
      • 2014-09-03
      相关资源
      最近更新 更多