Visual studio 阻止Visual Studio尝试加载特定DLL的符号
我已将VisualStudio2005设置为使用Microsoft的符号服务器。我还安装了,它将一个钩子DLL注入到每个进程中。每当我开始调试应用程序时,Visual Studio都会说:Visual studio 阻止Visual Studio尝试加载特定DLL的符号,visual-studio,debugging,debug-symbols,Visual Studio,Debugging,Debug Symbols,我已将VisualStudio2005设置为使用Microsoft的符号服务器。我还安装了,它将一个钩子DLL注入到每个进程中。每当我开始调试应用程序时,Visual Studio都会说: "Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..." 从眨眼到几十秒的时间。它永远也找不到那些符号。。。我能告诉它不要费心看吗 (我尝试创建一个空的RTSUltraMonHookX32.pdb文件,但Visual
"Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..."
从眨眼到几十秒的时间。它永远也找不到那些符号。。。我能告诉它不要费心看吗
(我尝试创建一个空的
RTSUltraMonHookX32.pdb
文件,但Visual Studio发现它不好,继续查找。)您不能以非常细粒度的方式执行此操作,但可以禁用自动符号加载,然后通过模块窗口(调试->窗口->模块)手动选择要加载的符号
禁用自动符号加载的步骤
- 工具->选项->调试->符号
- 选中“仅在手动加载符号时搜索上述位置”
\u NT\u SYMBOL\u PATH
会导致这种行为,而且对我来说是\u NT\u ALT\u SYMBOL\u PATH
环境变量导致了延迟
(我相信我在试验WinDbg时添加了此变量)从Visual Studio 2010开始,您可以访问:
Tools -> Options -> Debugging -> Symbols -> Specify excluded modules
并输入加载时间过长的DLL列表。我使用输出窗口给出的完整路径;可能它接受通配符或简单的文件名。在Visual Studio 2013 Pro中,如果选中Microsoft Symbol服务器,VS将尝试在其服务器上加载所有符号,从而导致大量额外时间。
- 手动从MS网站加载所有符号包,将其置于SSD驱动器上以提高速度:-)
- 如果您有一个“\n t\u SYMBOL\u PATH”环境变量,请从“SRVe:\symbols*”中删除部分“”,这样您就只有符号所在的符号路径
- 现在您支持符号,但它们不会从MS下载,而是从硬盘加载
- 在我的例子中,这是因为我在中将“Enable.Net Source Stepping”设置为true
Tools > Options > Debugging > General.
我没有将其设置为false,而是将“仅启用我的代码”设置为true,这会自动将“启用.Net源代码步进”设置为false。在这样做之前,它给了我一个警告:
Enabling Just my code automatically disabled .Net framework source stepping
这表明仅我的代码
和与
是相互排斥的
我希望这对某人有所帮助。如果您转到调试选项->符号,然后选中“仅加载指定符号”,它将不会自动加载符号,并且调试器可以正常工作。这听起来很完美,但对我来说不起作用。我已经向注册表中添加了条目,创建了一个包含正确条目的symsrv.ini,并重新启动了我的计算机以防万一,但Visual Studio仍试图加载这些符号。有什么想法吗?对我来说也不行。但据我所知,此列表仅适用于PDB,而不是DLL。遗憾的是,Visual Studio 2005中没有此列表,但很高兴知道它在更高版本中存在。@RichieHindle;但是IIRC,JaredPar的方法在VC2005中起作用。实际上,使用通配符是可能的。微软提供了一个非常混乱的用户界面,而不是一个关于可能的通配符的注释。例如,我可以通过在列表中添加“DevExpress*”来禁用DevExpress符号加载。哇,太棒了!疯子在此之前,我有4秒的开始时间,它说已经“通过包含/排除设置禁用加载”。但在我添加了所有这些内容(20)后,时间缩短到了2秒(Visual Studio 2017)。必须是符号加载系统中的一个错误,即使VS在此之前假装不加载符号,这也可以减少50%(我的集合中没有_NT_SYMBOL_路径)。我从输出窗口得到符号被排除的确认(oleaut32.dll),但它还是会尝试加载该库的符号。人们通常会问这个问题,因为他们根本不需要符号,而不是因为他们不想通过互联网下载,也不知道如何在本地使用符号。他们只是想永远关闭它。@user5280911好吧,关闭它的主要动机可能是加载符号时对性能的影响。如果加载速度很快,那么不想让它消失的主要原因就消失了。天哪!实际上,将此设置为启用.Net源代码单步执行为true并仅禁用我的代码使错误消失。这与你所说的正好相反,但它起了作用。非常感谢!显然这个选项在VisualStudio2019中消失了?