阻止Visual Studio尝试加载特定DLL的符号

时间:2009-05-15 14:53:53

标签: visual-studio debugging debug-symbols

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

"Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..."
从眨眼到几十秒的任何事情。它永远不会找到那些符号......我可以告诉它不要再费心了吗?

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

9 个答案:

答案 0 :(得分:101)

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

禁用自动符号加载

  • 工具 - >选项 - >调试 - >符号
  • 选中“仅在手动加载符号时搜索上述位置”

答案 1 :(得分:24)

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

答案 2 :(得分:20)

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

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

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

答案 3 :(得分:8)

在我的情况下,这是因为我已设置"启用.Net源步进"

中的真实
Navigate | File/Class...

我设置"启用我的代码"而不是将其设置为false。为true,自动设置"启用.Net源步进"为假。在这之前它给了我一个警告:

Tools > Options > Debugging > General. 

建议Enabling Just my code automatically disabled .Net framework source stepping Just My Code 互斥

我希望这有助于某人。

答案 4 :(得分: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。*。例如。

答案 5 :(得分:1)

不仅_NT_SYMBOL_PATH会导致此行为,但对我而言,_NT_ALT_SYMBOL_PATH环境变量导致延迟。

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

答案 6 :(得分:1)

如果您转到调试选项 -> 符号,然后选中“仅加载指定的符号”,则不会自动加载符号并且调试器可以正常工作。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

  • 手动从MS网站加载所有符号包,将它们放在SSD驱动器上以提高速度: - )
  • 如果您有" _NT_SYMBOL_PATH"环境变量,删除部分" http://msdl.microsoft.com/download/symbols"来自" SRV e:\ symbols * http://msdl.microsoft.com/download/symbols",因此您只有符号路径,您的符号可以很好地下载。
  • 现在您已经支持符号,但它们不会从MS下载,而是从驱动器加载