76

我将 Visual Studio 2005 设置为使用 Microsoft 的符号服务器。我还安装了UltraMon,它会在每个进程中注入一个钩子 DLL。每当我开始调试MFC应用程序时,Visual Studio 都会说:

"Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..."

从眨眼到几十秒的任何时间。它永远找不到那些符号……我可以告诉它不要费心去寻找吗?

(我尝试创建一个空RTSUltraMonHookX32.pdb文件,但 Visual Studio 认为它不好并继续查找。)

4

9 回答 9

128

您不能以非常精细的方式执行此操作,但您可以禁用自动符号加载,然后通过“模块”窗口(调试 -> Windows -> 模块)手动选择要加载的符号。

禁用自动符号加载

  • 工具 -> 选项 -> 调试 -> 符号
  • 勾选“仅在手动加载符号时搜索上述位置”
于 2009-05-15T14:56:33.387 回答
29

还要检查您是否没有“_NT_SYMBOL_PATH”环境变量。如果你有这个 var 符号,无论 VS 设置如何,都会加载。

于 2010-07-04T22:12:07.550 回答
25

从 Visual Studio 2010 开始,您可以访问:

Tools -> Options -> Debugging -> Symbols -> Specify excluded modules

并输入加载时间过长的 dll 列表。我使用输出窗口给出的完整路径;也许它接受通配符或简单的文件名。

于 2012-05-25T08:31:43.307 回答
15

就我而言,这是因为

Tools > Options > Debugging > General. 

我没有将其设置为 false,而是将“仅启用我的代码”设置为 true,这会自动将“启用 .Net Source Stepping”设置为 false。在这样做之前它给了我一个警告:

Enabling Just my code automatically disabled .Net framework source stepping

这表明Just My Code并且.Net source stepping相互排斥的。

我希望这可以帮助别人。

于 2017-03-02T11:48:29.823 回答
1

您还可以在 HKEY_CURRENT_USER\Software\Microsoft\Symbol Server\Exclusions 或 HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions 或通过 .ini 文件在 %WINDIR%\ 中设置不会尝试下载的符号服务器排除项system32\inetsrv\Symsrv.ini(使用标题 [exclusions] 并将每个排除项放在自己的行上)。排除是简单的模式匹配,因此使用 msxml5.* 例如。

于 2010-08-04T15:54:26.630 回答
1

不仅_NT_SYMBOL_PATH会导致这种行为,而且对我来说_NT_ALT_SYMBOL_PATH,导致延迟的是环境变量。

(我相信我在试验 WinDbg 时添加了这个变量)

于 2012-01-13T09:08:04.010 回答
1

如果您转到 Debug Options -> Symbols 然后选中 "load only specified symbols" ,它不会自动加载符号并且调试器可以正常工作。

于 2021-01-28T04:28:43.843 回答
0

在 Visual Studio 2013 Pro 中,如果选中 Microsoft Symbol Server,VS 将尝试在其服务器上加载所有符号,从而导致大量额外时间。

于 2016-09-01T14:59:02.393 回答
0
  • 手动从 MS 网站加载所有符号包,将它们放在 SSD 驱动器上以提高速度:-)
  • 如果您有“_NT_SYMBOL_PATH”环境变量,请从“SRV e:\symbols* http://msdl.microsoft.com/download/symbols ”中删除“ http://msdl.microsoft.com/download/symbols ”部分,因此您只有珍贵下载的符号所在的符号路径。
  • 现在您已经支持符号,但它们不会从 MS 下载,而是从驱动器加载
于 2016-09-06T23:11:10.183 回答