【发布时间】:2012-11-28 22:09:03
【问题描述】:
我已禁用“Microsoft 符号服务器”并添加了从 http://referencesource.microsoft.com/ 下载的 .NET 4.5 符号 (W:\Debug\RefSrc\Symbols) 的路径。
不幸的是,当我强制加载符号时,例如在 mscorlib.dll 上,Visual Studio 会忽略此文件夹并继续从符号服务器下载符号文件。它们以W:\Debug\SymbolsCache\MicrosoftPublicSymbols 结尾,与RefSrc 中的完全相同。
还有其他人看到这种行为吗?
我的调试设置:
[ ] Enable Just my code
[ ] Enable .NET framework source stepping
[ ] Enable source server support
由于this,我不得不禁用“.NET 框架源步进”。
【问题讨论】:
-
我在相同的设置下遇到了同样的问题。 Process Monitor 显示 VS 甚至没有尝试访问配置的文件夹。
-
它们的大小不能相同。 mscorlib.pdb 的 refsrc 副本为 21 MB。您从源服务器获得的那个被剥离,只有 780 KB。这里没有足够好的线索来发布答案。至少在 Debug + Windows + Modules 窗口中右键单击 mscorlib.dll,然后单击 Symbol Load Information。发布您看到的内容。
-
@HansPassant:您看到这种大小差异是因为您没有源代码附带的 DLL 版本,可能是由于安全补丁:请参阅stackoverflow.com/a/12432029/183367 了解更多信息。问题不在于 PDB 是否带有源代码,这在我链接的问题中得到了解决。 VS 甚至不会尝试加载匹配的 PDB(无论有没有源,我现在不在乎),除非它们已经在缓存中,并且总是会求助于下载,即使未选中“Microsoft 符号服务器”。
-
“除非它们已经在缓存中”非常奇怪。您应该自己将它们添加到缓存中。但是,是的,修复和安全补丁通常使这成为一个失败的原因。
-
你不需要——你可以指定符号位置文件夹,VS 似乎忽略了这些文件夹。将它们复制到缓存文件夹中是可行的,但这不是一个实用的解决方案,尤其是当您的符号位于网络位置时。
标签: debugging visual-studio-2012