从Microsoft加载.NET PDB符号

时间:2013-07-31 18:31:27

标签: regex visual-studio-2010 symbols pdb-files symbol-server

我已根据此在VS 2010中设置了符号服务器:

http://msdn.microsoft.com/en-us/library/vstudio/b8ttk8zy(v=vs.100).aspx

但我的目标是进入RegularExpressions命名空间中的Regex类:

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim matObject As Match = Regex.Match("abc", "a")
    End Sub
End Module

我知道System.dll程序集中的RegularExpressions符号很久以前就被公开了,因为我前一段时间阅读了一篇关于它的文章并对它做了一些小概述。但我找不到这篇文章。

就目前而言,当我“进入”我的匹配功能时,它甚至没有给我一个Step-Over对话框。它刚刚结束。

1 个答案:

答案 0 :(得分:1)

原来存在多个问题。其中一部分包括Visual Studio 2008 SP1,但这在2013年底几乎不是一个相关问题。

我的解决方案是......不要使用Symbol Server。至少在VS 2010中,它会强制您使用“Microsoft符号服务器”,这取决于一个或两个因素,可以从通用位置加载,也可以从http://referencesource.microsoft.com/symbols加载。

两者的问题在于,每次我使用这些符号文件位置时,它们都被剥离了PDB。虽然您可能会注意到子域“http://referencesource.microsoft.com/symbols”,但参考源距离更近了。

所以我做的是导航到Download Source,它位于同一个子域。由于我使用的是.NET 4.0,因此我下载了.NET 4.0源文件。

WTF ??所以现在我已经下载了一些名为NetFramework.aspx的垃圾文件。当我打开它时,它就冻结了我的电脑。重点是什么?好吧,没有人告诉你这个,但你必须将它改名为Whatever.msi。它实际上是一个安装程序。

运行安装程序后,您的计算机上会显示完整符号。再来一次!!!此时,您需要确保正确设置Visual Studio。

  1. 确保您的项目框架与您刚刚下载的源代码框架相匹配。 (和/或副Versa)
  2. 确保已启用“启用.NET Framework源步进”。
  3. 对我来说,在我的选项>调试>符号菜单,我选择了“仅指定模块”,我在那里没有选择任何东西。此外,我取消了PDB位置的检查,因此没有选择任何内容。
  4. 有时平台目标是一个问题。我的设置为AnyCPU,但您可能需要进行实验吗?
  5. OKAY !!全部设定,让我们这样做......失败。

    现在当你点击F11时,它仍然只是跨过代码。好吧,如果你看看你的模块(运行时),希望系统或mscorlib的符号或任何你的程序集的符号表示符号未加载。 (那很好)。

    为什么那么好?因为如果它们已加载,则无法加载它们。通常情况下,如果它们被加载,它们会从一些笨拙剥离的PDB位置加载,从而无法使用。因此,右键单击所选的程序集和“从路径加载...”,然后转到从MSI安装这些PDB的任何位置。

    好极了...现在,如果您尝试进入.NET Framework代码,或者如果您尝试从Call-Stack加载代码,则只会丢失代码错误以及查找源代码的选项灰了!好吧,我以为我们有代码!!!!我只是装了它。

    让我们回顾一下“模块”窗口。在您要加载的程序集旁边,您可能会在版本中注意到它表示类似“由RTMGDR构建”或“RTMRel”之类的东西。好吧,RTMGDR意味着当前使用的代码版本与原始版本不同。它为什么不同?因为安装了KB安全更新。由于守则与PDB不同......你不能介入。

    不幸的是,你无法获得最新的PDB。谁知道为什么......也许是因为它是一个安全更新。但是你可以做的......就像google你的版本一样:

    “mscorlib.dll”4.0.30319.xxx网站:support.microsoft.com/kb

    您无需点击任何内容。只需查看第一个结果的URL,您就会看到KB编号,如下所示:

    support.microsoft.com/kb/12345

    打开“添加/删除程序”(运行:appwiz.cpl),然后查看“已安装的更新”。您将非常轻松地在Visual Studio组下找到该KB,并且可以卸载它。

    然后再次运行Visual Studio ..你可能会看到一个带有旧版本的新RTMGDR ...... Google,删除它的KB ......冲洗并重复。

    保持跟踪你删除的KB(按顺序)。因此,您可以在研究后重新安装它们。

    一旦你最终下载到版本xxxxxx.1(RTMRel),你将Visual Studio运行到断点...打开你的模块...从路径加载符号...从你的MSI中选择你的PDB。 ..然后....进入你的.NET代码

    最后!!!

    现在,当您完成后,重新安装这些KB,但下次保持所有其他设置相同。安全很重要。