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

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

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

对于从眨眼到几十秒的任何事情。 它永远不会find这些符号…我可以告诉它不要打扰看?

(我试图创build一个空的RTSUltraMonHookX32.pdb文件,但Visual Studio认为它不好,继续寻找。)

你不能以非常细致的方式做到这一点,但你可以禁用自动符号加载,然后通过模块窗口(Debug – > Windows – > Modules)手动select要加载的符号。

禁用自动符号加载

  • 工具 – >选项 – >debugging – >符号
  • 选中“仅在手动加载符号时才search上述位置”

还要检查你是否有“_NT_SYMBOL_PATH”环境variables。 如果你有这个var符号将加载,无论VS设置。

从Visual Studio 2010开始,你可以去:

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

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

在我的情况下,这是因为我已经设置“启用.Net源程序”为true

 Tools > Options > Debugging > General. 

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

 Enabling Just my code automatically disabled .Net framework source stepping 

这表明Just My Code.Net source stepping是互斥的。

我希望这可以帮助别人。

您也可以在HKEY_CURRENT_USER \ Software \ Microsoft \ Symbol Server \ Exclusions或可能还有HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Symbol Server \ Exclusions中或者通过%WINDIR%下的.ini文件中设置符号服务器排除项。 system32 \ inetsrv \ Symsrv.ini(使用头[排除]并把每个排除在自己的行)。 排除是简单的模式匹配,所以使用msxml5。*例如。

不仅_NT_SYMBOL_PATH可能会导致此行为,但对我来说是_NT_ALT_SYMBOL_PATH环境variables导致延迟。

(我相信我在用WinDbg进行实验时添加了这个variables)

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

  • 从MS网站手动加载所有的符号包,把它们放在一个固态硬盘驱动器的速度:-)
  • 如果您有一个“_NT_SYMBOL_PATH”环境variables,请从“SRV e:\ symbols * http://msdl.microsoft.com/download/symbols ”中删除“ http://msdl.microsoft.com/download/symbols部分,所以你只有符号path,你的符号下载珍贵。
  • 现在你有符号的支持,但他们不会从MS下载,但从驱动器加载