我已根据此在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对话框。它刚刚结束。
答案 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。
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,但下次保持所有其他设置相同。安全很重要。