【问题标题】:Debugging Asp.net MVC 5.2.3 source code调试 Asp.net MVC 5.2.3 源码
【发布时间】:2017-06-13 16:58:40
【问题描述】:

我的目标是调试 Asp.net MVC 5.2.3 源代码。

  1. 我在 Visual Studio 2013 中创建了 Asp.net MVC 应用程序并更新了 所有 NuGet 包。
  2. 按照中所述设置 VS2013 https://referencesource.microsoft.com/setup.html
  3. 在符号中添加了http://referencesource.microsoft.com/symbolshttps://nuget.smbsrc.nethttp://srv.symbolsource.org/pdb/Publichttp://srv.symbolsource.org/pdb/MyGethttp://msdl.microsoft.com/download/symbolshttps://nuget.smbsrc.net

但是当我尝试“进入”控制器的视图方法时,我看到“找不到 Controller.cs”。当我尝试导航到堆栈跟踪时,我看到“正在从 https://nuget.smbsrc.net/ 下载源代码”,但源代码没有下载。

是否可以调试Asp.net MVC 5.2.3的源代码?

更新 1 我已更改符号列表。实际是:

此更改后,模块窗口中存在下一个日志:

https://nuget.smbsrc.net: Symbols downloaded from symbol server.*****\AppData\Local\Temp\SymbolCache\System.Web.Mvc.pdb\5878BE5BDA9D485C84CA1F292E2AD75E1\System.Web.Mvc.pdb: Symbols loaded.

我们可以看到 pdb 文件已加载。但是当我导航到源代码时,它不会打开。

nuget.smbsrc.net上好像没有源代码

【问题讨论】:

  • @JackZhai-MSFT 我已经试过了。编译 Asp.net mvc 源代码并将二进制文件包含到我的项目中允许我“步入”asp.net 源代码。但对我来说,这是一个很大的解决方法。我记得几年前我调试源代码时没有编译,只是简单地配置正确的设置。我对从那时起发生的事情以及对nuget.smbsrc.net 的奇怪请求感兴趣。
  • Gald 知道它很有帮助,即使它是解决此问题的方法。我所知道的是,Microsoft 符号服务器没有为整个 .NET 框架提供所有符号/源代码。从VS2010等老版本开始,我们也手动下载源码:stackoverflow.com/questions/5827115/…

标签: .net asp.net-mvc debugging visual-studio-debugging


【解决方案1】:

我找到了解决办法!

我按照http://www.symbolsource.org/Public/Wiki/Using 中的描述设置了 VS,但有一个例外。我已经从符号列表中删除了http://srv.symbolsource.org/pdb/Public。我注意到,从 http://srv.symbolsource.org/pdb/Public 下载的符号试图从 https://nuget.smbsrc.net 下载源代码,但从 http://srv.symbolsource.org/pdb/MyGet 下载的符号从 symbolsource.org 下载源代码。

如果要调试 Asp.net mvc 5.2.3,只需从符号列表中删除 http://srv.symbolsource.org/pdb/Public 并确保从 http://srv.symbolsource.org/pdb/MyGet 下载的 pdb 文件

【讨论】:

    【解决方案2】:

    我无法让上面发布的解决方案正常工作,但我确实找到了另一种解决方法。

    为了查看实际源代码,我可以使用 JetBrains 的 dotPeek 打开并查看任何 DLL 文件的源代码

    为了在 Visual Studio 中实际加载源,我无法使用 Go To Implementation (Ctrl+F12 导航到源),但我能够通过调试菜单设置断点,此时 Visual Studio 会中断,然后允许我查看实现。

    1. 使用 dotPeek 查找要中断的位置的完整命名空间方法名称
    2. 在 Visual Studio 中导航到 Debug > New BreakPoint > Function Breakpoint (Ctrl+B) 并在 JetBrains 中找到的函数上设置断点。示例:System.Web.Mvc.Authorization.AuthorizeCore
    3. 在 Visual Studio 中调试应用程序,它会在设置的点中断,允许您逐步浏览并探索该函数的源代码

    【讨论】:

      猜你喜欢
      • 2014-09-19
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 2017-07-06
      • 2013-10-12
      • 1970-01-01
      相关资源
      最近更新 更多