防止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下载,但从驱动器加载