你如何启用“启用.NET Framework源码步进”?
更新2013年2月22日 :Microsoft Connect条目已经从Alok Shriram(程序管理器,基类库,.NET Framework)注意到现在应该解决该问题。 连接条目标记为已解决(固定):
现在应该修复这个问题。 我们发布了对参考资料的更新。 如果您的问题仍未解决,请告诉我们。
一年半。
奖金链接
表决该错误在Microsoft Connect上修复。
微软社交网络已经持续了一年半的时间,询问它什么时候会修复。
原始问题
如何在Visual Studio 2010中启用.NET框架源代码步进?
注意 :这个问题是一个更大的整体:
Visual Studio 2010带有一项新功能:
遵循MSDN页面上的说明如何:调试.NET Framework源代码:
启用.NET Framework源代码调试
在工具菜单上,单击选项 。
在选项对话框中,单击调试类别。
在“ 常规”框中,选择以下复选框:
我这样做:
注意 :您将注意到,正如MSDN页面注释,以及我注意到的,检查启用.NET Framework源代码步进将自动取消选中**启用只是我的代码(仅限管理)。 我还启用了源服务器支持的诊断消息。
启用这些选项会自动为我设置一个符号缓存下载位置:
注意 : Microsoft Symbol Server条目已经存在(并且不能被删除)。
MSDN页面说加载符号:
使用“模块”窗口加载框架符号
在“ 模块”窗口中,右键单击未加载符号的模块。 您可以通过查看符号状态列来判断符号是否已加载。
指向加载符号并单击Microsoft符号服务器以从Microsoft公共符号服务器或符号路径下载符号,以便从之前存储符号的目录加载。
我试试这个:
然后加载所有符号:
我一直在坐在一个断点上,它正在调用.NET框架代码:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
推F11导致调试器只是跳到下一行:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
//Record the running scale factor used
this.scaleFactor = new SizeF(
this.scaleFactor.Width * factor.Width,
this.scaleFactor.Height * factor.Height);
如何在Visual Studio 2010中启用.NET Framework源代码步进?
我坐在代码中的一个断点处。 我尝试双击进一步调用堆栈中的函数。 我希望这可以让我跳转到.NET代码:
除了它不起作用:Visual Studio告诉我没有可用的源代码:
如何在Visual Studio 2010中启用.NET Framework源代码步进?
如果我在尝试进入.NET代码( 调试 - > Windows - > 反汇编 )之前切换到反汇编视图,我可以看到一个call
.NET代码:
当我这样做时,我最终调试了System.Windows.Forms.ScaleControl
的反汇编:
这与.NET Framework源代码不一样,也不一样有用。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
我的计算机上配置的符号缓存路径确实包含符号缓存文件:
所以它下载了pdb
符号文件,但拒绝使用它们。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
Leppie建议我检查Debug
日志(打开调试日志窗口,否则它不会记录任何内容):
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
在日志中,我看到它加载System.Windows.Forms.dll
符号:
Loaded 'C:WindowsassemblyGAC_MSILSystem.Windows.Forms2.0.0.0__b77a5c561934e089System.Windows.Forms.dll', Symbols loaded.
所以它找到了我的符号,但声称它找不到它们。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
来自微软意大利的人建议关闭Require源文件以完全匹配原始版本 :
这并没有解决它。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
有人提出,Microsoft的.NET Framework 4.0源服务器存在一个错误。 遵循这个建议,我将项目切换到了.NET Framework 3.5的目标:
这并没有解决它。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
有人在某处空闲地想知道另一个遇到同样问题的人是否正在使用64位版本的调试器。 现在,没有64位版本的Visual Studio,但是我试图将我的项目从AnyCPU切换到x86 (它被JITed转换为x64),以防Microsoft不支持64位处理器:
这并没有解决它:
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
如何在Visual Studio 2010中启用.NET Framework源代码步进?
也可以看看
用于单步执行源代码的PDB仅发布用于RTM和Service Pack。 因此,当安全更新出来并且它修改了你正在尝试调试的dll时,它将导致源代码步进不起作用(也就是说,你将得到“无源代码”并且灰显“Browse to find Source “)。
但是,一旦您进行了所有适当的设置,就可以使用以下解决方法。 解决方法主要是找到导致dll更改的安全更新,然后将其删除。 这在您的计算机上删除了这些安全更新的明显缺点。
解决方法
site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
http://support.microsoft.com/kb/2604121
,因此KB2604121是我们感兴趣的内容。 你需要为你关心的.NET框架中的每个dll执行此操作。
完成之后,在.net源文件中设置一个断点(例如,进入Breakpoints选项卡,例如New-> Break at Function,然后输入System.Windows.Forms.Form.Form),或者进入一个.net方法在该DLL。
不幸的是,微软有一个问题,正如Leppie指出的那样(我看到了同样的结果
应该指出,你的尝试会失败,因为你引用:
代替:
referencesource.microsoft.com/symbols
请参阅配置Visual Studio以调试.NET Framework源代码的FAQ /疑难解答部分
我想,我找到了答案。
我追溯了小提琴手上发生的事情。 似乎只有符号现在可用,并且没有任何来源。
当VS尝试从'referencesource'服务器加载符号时,它会失败(404)。 如果失败,我认为它无法映射到该服务器上的源文件。
http://referencesource.microsoft.com/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pdb
在上述失败之后,它会尝试一些名为'msdl'的服务器,在该服务器中找到实际的PDB(但看起来这个服务器没有源代码信息)。
http://msdl.microsoft.com/download/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pd_
总而言之,这似乎是他们的服务器(临时)微软问题。
我确信我有一段时间的源代码。 但现在它不起作用。
编辑:
我尝试了各种.NET版本,所有相同的结果。 :(
链接地址: http://www.djcxy.com/p/12937.html上一篇: How do you enable "Enable .NET Framework source stepping"?