调试Asp.net MVC 5.2.3源代码

时间:2017-01-27 21:55:41

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

我的目标是调试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/symbols https://nuget.smbsrc.net
  4. 但是当我试图“Step Into”控制器的View方法时,我看到“未找到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文件已加载。但是当我导航到源代码时,它将无法打开。 enter image description here

    似乎nuget.smbsrc.net上不存在源代码

2 个答案:

答案 0 :(得分:4)

我找到了解决方案!

我按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文件

答案 1 :(得分:1)

我无法在上面发布解决方案,但我确实找到了另一种解决方法。

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

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

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