Ian*_*oyd 116 .net visual-studio-2010 visual-studio
2013年2月22日更新:Microsoft Connect条目包含来自Alok Shriram(程序管理器,基类库,.NET Framework)的注释,现在应该解决该问题.Connect条目标记为已解决(已修复):
现在应该修复此问题.我们发布了参考资料的更新.如果您的问题仍未解决,请告知我们.
一年半.
如何在Visual Studio 2010中启用.NET框架源步进?
注意:这个问题是一个更大的整体:
- .NET 2.0 WinForm:支持DPI和默认字体更改
- 在ScaleControl期间,WinForms控件不会缩放
- VS2010:如何启用"启用.NET Framework源步进"?
- Visual Studio 2010 Professional:如何访问模块窗口?
- Visual Studio 2010:将项目重新定位到.NET Framework 3.5后,Properties.Settings中断了
Visual Studio 2010附带了一项新功能:
按照MSDN页面上的说明操作如何:调试.NET Framework源:
启用.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);
Run Code Online (Sandbox Code Playgroud)
推送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);
Run Code Online (Sandbox Code Playgroud)
如何在Visual Studio 2010中启用.NET Framework源步进?
我正坐在代码的断点处.我尝试双击调用堆栈中的某个函数.我希望,这可以让我跳转到.NET代码:
除了它不起作用:Visual Studio告诉我没有可用的源:
如何在Visual Studio 2010中启用.NET Framework源步进?
如果我在尝试进入.NET代码(Debug - > Windows - > Disassembly)之前切换到反汇编视图,我可以看到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'
Run Code Online (Sandbox Code Playgroud)
在日志的早些时候我看到它加载符号System.Windows.Forms.dll
:
Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.
Run Code Online (Sandbox Code Playgroud)
因此,它是发现我的符号,但声称它无法找到他们.
如何在Visual Studio 2010中启用.NET Framework源步进?
来自Microsoft Italy的人建议关闭Require sources文件以与原始版本完全匹配:
这没有解决它.
如何在Visual Studio 2010中启用.NET Framework源步进?
有人建议微软的.NET Framework 4.0源服务器存在漏洞.根据该建议,我将项目切换到目标.NET Framework 3.5:
这没有解决它.
如何在Visual Studio 2010中启用.NET Framework源步进?
有人在某个地方想知道另一个遇到同样问题的人是否正在使用64位版本的调试器.现在,没有64位版本的Visual Studio,但我尝试将我的项目从AnyCPU切换到x86(它被JIT到x64),以防微软不支持64位处理器:
这没有解决它:
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
Run Code Online (Sandbox Code Playgroud)
如何在Visual Studio 2010中启用.NET Framework源步进?
Mat*_*ith 35
用于单步执行源代码的PDB仅针对RTM和Service Pack发布.因此,当安全更新出来并且它修改了您尝试调试的dll时,它将导致源步进无法工作(也就是说,您将获得带有灰色的"No source Available""浏览以查找源代码").
但是,一旦完成了所有适当的设置,就可以使用以下解决方法.解决方法主要是查找导致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之一.net那个dll中的方法.
不幸的是,正如Leppie所指出的那样,微软存在一个问题(我也得到了同样的结果
应该注意的是,无论如何你的尝试都会失败,因为你引用了:
代替:
referencesource.microsoft.com/symbols
请参阅配置Visual Studio以调试.NET Framework源代码的常见问题/疑难解答部分
归档时间: |
|
查看次数: |
29795 次 |
最近记录: |