【问题标题】:Visual Studio 2012 ignores symbol locationsVisual Studio 2012 忽略符号位置
【发布时间】: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


【解决方案1】:

不知道你在 VS 2012 中是如何做到的,因为我从未尝试过,现在我没有 VS 2012,但我在 VS 2010 中的做法如下:

  1. 调试 - 从主菜单
  2. 选项和设置
  3. 调试 -> 常规
  4. 选中 Enable .NET Framework Source Stepping 并取消选中 Enable Just My Code
  5. 转到调试 -> 符号
  6. 为“在此目录中缓存符号”选择一个位置
  7. 检查 Microsoft 符号服务器
  8. 好的
  9. 在调试模式下启动您的应用程序
  10. 进入 Debug 菜单项并选择 Windows->Modules
  11. 按 F11 进入 Microsoft .NET Framework 代码(公开的,因为据我所知并非全部)

希望这对您有所帮助。我会禁用仅启用我的代码。另外,如果我没记错的话,可以在打开“模块”窗口时选择从何处加载符号,方法是右键单击要为其加载源的项目。如果 pdb 文件与二进制文件不对应,如果版本不同,它不会加载符号。

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多