如何启用“启用.NET Framework源步进”?

时间:2011-11-15 16:00:52

标签: .net visual-studio-2010 visual-studio

2013年2月22日更新:Microsoft Connect条目记录了Alok Shriram(程序管理器,基类库,.NET Framework),现在应该解决该问题。 Connect条目标记为已解决(已修复)

  

现在应该修复此问题。我们发布了参考资料的更新。    如果您的问题仍未解决,请告知我们。

一年半。

奖金链接

原始问题

如何在Visual Studio 2010中启用.NET框架源步骤?


  

注意:这个问题是一个更大的整体:

     

Visual Studio 2010附带了一项新功能:

  • 工具,选项,调试,常规,启用.NET Framework源代码

Screenshot of options menu

按照MSDN页面How to: Debug .NET Framework Source上的说明进行操作:

  

启用.NET Framework源代码调试

     
      
  1. 工具菜单上,点击选项

  2.   
  3. 选项对话框中,点击调试类别。

  4.   
  5. 常规框中,选中以下复选框:

         
        
    • 启用.NET Framework源步骤
    •   
    • 启用源服务器支持
    •   
  6.   

我这样做:

Screenshot of options menu, highlighting the relevant options selected

注意:您将注意到,正如MSDN页面所述,并且正如我所注意到的那样,检查启用.NET Framework源代码将自动取消选中**启用Just My代码(仅限管理)。我还启用了源服务器支持的诊断消息。

启用这些选项会自动为我设置符号缓存下载位置:

Screenshot of options menu, showing cache directory (highlighted)

注意 Microsoft Symbol Server 条目已存在(无法删除)。


MSDN页面表示加载符号:

  

使用“模块”窗口加载框架符号

     
      
  1. 模块窗口中,右键单击未加载符号的模块。您可以通过查看符号状态列来判断符号是否已加载。

  2.   
  3. 指向加载符号,然后单击 Microsoft Symbol Server 从Microsoft公共符号服务器或符号路径下载符号,以从您拥有的目录加载以前存储的符号。

  4.   

我试试这个:

enter image description here

然后加载所有符号:

Screenshot of modules window, as described above

我一直坐在断点上,即将调用.NET框架代码:

Screenshot of code, transcribed below

protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
    base.ScaleControl(factor, specified);

F11 会导致调试器跳转到下一行:

Screenshot of code, transcribed below

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代码:

enter image description here

除了它不起作用:Visual Studio告诉我没有可用的源:

Screenshot of error message saying No Source Available

如何在Visual Studio 2010中启用.NET Framework源步骤?


如果在尝试进入.NET代码之前切换到反汇编视图(调试 - > Windows - > 反汇编),我可以在.NET代码中看到call

Screenshot of code

当我这样做时,我最终调试了System.Windows.Forms.ScaleControl

的反汇编

Screenshot of disassembly window

与步入.NET Framework源代码不同或有用。

如何在Visual Studio 2010中启用.NET Framework源步骤?


我计算机上配置的符号缓存路径包含符号缓存文件:

Screenshot of folder listing

因此它正在下载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:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.

enter image description here

所以它找到我的符号,但声称它找不到它们。

如何在Visual Studio 2010中启用.NET Framework源步骤?


来自微软意大利的人建议关闭要求源文件与原始版本完全匹配

Screenshot of options window

这没有解决它。

如何在Visual Studio 2010中启用.NET Framework源步骤?


有人建议Microsoft的源代码服务器存在 .NET Framework 4.0 的错误。根据该建议,我将项目切换为 .NET Framework 3.5

enter image description here

这没有解决它。

如何在Visual Studio 2010中启用.NET Framework源步骤?


有人在某个地方想知道另一个人是否遇到同样的问题was using the 64-bit version of the debugger。现在,没有64位版本的Visual Studio,但我尝试将我的项目从 AnyCPU 切换到 x86 (它被JIT到x64),案例Microsoft不支持64位处理器:

enter image description here

这没有解决它:

Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'

如何在Visual Studio 2010中启用.NET Framework源步骤?


另见

7 个答案:

答案 0 :(得分:6)

虽然不幸的是,正如Leppie指出的那样,微软存在问题(我也得到了相同的结果,见

应该注意的是,无论如何你的尝试都会失败,因为你引用了:

  • Microsoft Symbol Server

而不是:

  • referencesource.microsoft.com/symbols

请参阅Configuring Visual Studio to Debug .NET Framework Source Code

的常见问题/疑难解答部分

答案 1 :(得分:4)

我认为我找到了答案。

我追踪了Fiddler上发生的事情。似乎只有符号目前可用,而且没有来源。

当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_

总而言之,它似乎是他们服务器的(临时)Microsoft问题。

我确信我有一些源代码。但现在它无法正常工作。

修改

我尝试了各种.NET版本,结果相同。 :(

答案 2 :(得分:1)

现在,如果安装了SP1,则无法正常工作。以下是关于MS问题表单的一些评论:http://social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639

答案 3 :(得分:0)

您可以在此处找到参考资料来源,可供下载:

.NET Framework 4.0 Reference source

WCF,WF,甚至4.5 Beta / RC的来源等等 也可以在那里找到:

Microsoft Referencesource NetFramework

答案 4 :(得分:0)

以下是官方说明https://referencesource.microsoft.com/setup.html

  

配置Visual Studio 2013以调试.NET框架

     

要配置Visual Studio 2013,请在“工具”中执行以下操作    - >选项 - >调试 - >一般菜单:

     
      
  • 仅禁用我的代码
  •   
  • 禁用步骤属性和运算符
  •   
  • 禁用要求源文件与原始版本完全匹配
  •   
  • 启用.NET框架源步进
  •   
  • 启用源服务器支持
  •   

答案 5 :(得分:0)

以我为例,我正在调试旧的 .NET 2.0 WinForms 应用程序,并且收到了“ Source Not Available” 消息。我尝试了所有推荐的设置。

最终,我重新构建了该应用程序,以临时定位 .NET 4.5 ,并且能够使源代码正常工作。也许我的应用程序太旧了,无法进行源代码步进。我知道有种失败的目的,但是对于快速而肮脏的测试它是可行的。 .NET 4.5 中仍然存在我存在的错误。 :)

Target Framework

答案 6 :(得分:-1)

如果要调试开源代码(例如nuget包),可以将此URL添加到符号服务器列表

http://srv.symbolsource.org/pdb/Public

  

http://www.symbolsource.org/Public/Home/VisualStudio