更新于2013年2月22日 : Microsoft Connect 条目中有来自 Alok Shriram (程序管理器,基类库,。NET Framework) ,该问题现在应该得到解决。连接条目被标记为 Resolved (Fixed):
This issue should now be fixed. We published an update to reference sources. 如果你的问题还没有解决,请告诉我们。
一年半。
如何在 VisualStudio2010中启用.NET 框架源单步执行?
注意 : 这个问题是一个更大的整体的一部分:
- .NET 2.0 WinForm: 支持 DPI 和默认字体更改
- 在 ScaleControl 期间,WinForms 控件不伸缩
- VS2010: 如何启用“启用.NET Framework 源代码单步执行”?
- VisualStudio2010Professional: 如何访问“模块”窗口?
- Visual Studio 2010: Properties. 将项目重定向到.NET Framework 3.5后设置中断
Visual Studio 2010增加了一个新功能:
按照 MSDN 页面 如何: 调试.NETFramework 源的说明:
启用.NETFramework 源调试
在 工具菜单上,单击 选择。
在 Options对话框中,单击 正在调试类别。
在“ 将军”框中,选中以下复选框:
- Enable .NET Framework source stepping
- 启用源服务器支持
我这样做:
注意 : 您将注意到,正如 MSDN 页面所注意到的,选中 启用.NETFramework 源代码单步执行将自动取消选中 * * Enable Just My Code (仅管理)。我还启用了源服务器支持的诊断消息。
启用这些选项会自动为我设置一个符号缓存下载位置:
注意 : 微软符号服务器条目已经存在(不能删除)。
MSDN 页面说要加载这些符号:
使用“模块”窗口加载框架符号
在 模组窗口中,右键单击未加载其符号的模块。您可以通过查看 Symbols Status列来判断是否加载了符号。
指向 载入符号并单击 微软符号服务器从 Microsoft 公共符号服务器下载符号,或从以前存储符号的目录加载符号。
我试试这个:
然后所有的符号都被加载了:
I & rsquo; 一直坐在一个断点上,这个断点即将调用.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);
如何在 VisualStudio2010中启用.NETFramework 源单步执行?
我的代码正处于一个断点。我尝试双击调用堆栈中更上一层的一个函数。这将,我希望,允许我 jump到。NET 代码:
除了它不能工作: Visual Studio 告诉我没有可用的源代码:
如何在 VisualStudio2010中启用.NETFramework 源单步执行?
如果在尝试单步执行之前切换到反汇编视图。NET 代码(调试-> 窗户-> 拆卸) ,我可以看到一个 call
进入。NET 代码:
当我这样做时,我最终调试了 System.Windows.Forms.ScaleControl
的反汇编:
Which isn’t the same as, or as useful as, being able to step into the .NET Framework source.
如何在 VisualStudio2010中启用.NETFramework 源单步执行?
The configured symbol cache path on my computer does contain symbol cache files:
So it is downloading pdb
symbol files, but refusing to use them.
如何在 VisualStudio2010中启用.NETFramework 源单步执行?
Leppie suggested that I check the Debug
log (with the debug log window open; otherwise it doesn’t log anything):
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
在日志的前面,我看到它载入 System.Windows.Forms.dll
的符号:
Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.
所以 是找到了我的符号,却声称找不到。
如何在 VisualStudio2010中启用.NETFramework 源单步执行?
意大利微软公司的一位员工建议关闭 Require source files to exactly match original version:
那也解决不了问题。
如何在 VisualStudio2010中启用.NETFramework 源单步执行?
有人认为微软的 .NET Framework 4.0源服务器存在 bug。根据这个建议,我将项目转向目标 .NET Framework 3.5:
That didn’t fix it.
如何在 VisualStudio2010中启用.NETFramework 源单步执行?
某个地方的某个人无所事事地想知道另一个人是否也遇到了同样的问题 was using the 64-bit version of the debugger。现在,没有64位版本的 Visual Studio,但是我尝试将我的项目从 中央处理器切换到 X86(它被 JITed 到 x64) ,以防微软不支持64位处理器:
但这并没有解决问题:
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
如何在 VisualStudio2010中启用.NETFramework 源单步执行?