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


69

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

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

从眨眼到数十秒不等。它永远不会找到那些符号...我能告诉它不要打扰吗?

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

Answers:


115

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

禁用自动符号加载

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

5
显然此选项在Visual Studio 2019中消失了吗?
ebyrob '20


23

从Visual Studio 2010开始,您可以转到:

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

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


1
遗憾的是,这在Visual Studio 2005中不可用,但是很高兴知道它存在于更高版本中。
RichieHindle

1
@RichieHindle确实;但是IIRC,JaredPar的方法在VC2005中有效。
Calvin1602 2013年

确实可以使用通配符。微软提供了一个非常令人困惑的用户界面,而不是一个关于可能的通配符的注释。例如,我可以通过在列表中添加“ DevExpress *”来禁用DevExpress符号加载。
佐尔坦陶马希

哇,太好了!疯!在此之前,我有4秒钟的启动时间,它说已经“被包含/排除设置禁止加载”。但是在我全部添加(20)之后,它下降到2秒(Visual Studio 2017)。必须是符号加载系统中的一个错误,即使VS假装在此之前不加载符号,它也可以减少50%的错误(我的集合中没有_NT_SYMBOL_PATH)。
AndresRohrAtlasInformatik

我从“输出”窗口中得到确认,该符号已被排除(oleaut32.dll),但是无论如何,它将尝试加载该库的符号。
A. Niese

11

在我的情况,那是因为我已经设置了“启用净源步进”为真

Tools > Options > Debugging > General. 

而不是将其设置为false,而是将“ Enable Just My Code”设置为true,这会自动将“ Enable .Net Source Stepping”设置为false。在这样做之前,它给了我一个警告:

Enabling Just my code automatically disabled .Net framework source stepping

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

我希望这可以帮助别人。


1
我的天啊!实际上,将其设置为“启用.Net源代码步进”为true并禁用“仅我的代码”会使错误消失。这与您说的相反,但却成功了。非常感谢!
SmoveBB

1

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


这听起来很完美,但对我而言不起作用。我已将条目添加到注册表中,并在其中创建了具有正确条目的symsrv.ini,并重新启动了我的计算机,以防万一,但是Visual Studio仍然尝试加载符号。有任何想法吗?
RichieHindle

也不适合我。但是据我了解,该列表仅适用于PDB,而不适用于DLL。
Calvin1602 2012年

1

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

(我相信我在尝试WinDbg时添加了此变量)


0

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


0
  • 从MS网站手动加载所有符号包,然后将它们放在SSD驱动器上以提高速度:-)
  • 如果您具有“ _NT_SYMBOL_PATH”环境变量,请删除“ http://msdl.microsoft.com/download/symbols从“ SRV e:\ symbols * http://msdl.microsoft.com/download/symbols ”中,因此您只有宝贵的下载符号所在的符号路径。
  • 现在,您已经支持符号,但是它们不会从MS下载,而是从驱动器加载

人们之所以会问这个问题,是因为他们根本不需要符号,而不是因为他们不想通过Internet下载并且不知道如何在本地使用它。他们只是想永远关闭它。
user5280911

@ user5280911好吧,将其关闭的主要动机可能是加载符号时对性能的影响。如果加载速度很快,则不希望加载的主要原因就消失了。
彼得-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.