我正在尝试调试asp.net mvc源代码。这是我采取的步骤:
我使用Visual Studio 2017提供的模板设置了准asp.net mvc应用程序(版本5.2.4)。
我从offcial github下载了asp.net mvc源代码,根据this,MvcHandler将在代码路径中被命中,因此我在其processRequest()方法中设置了一个断点。
我按照Microsoft参考网站(there is a link on the main page)上有关如何设置VS的说明进行操作,并且我将“ https://referencesource.microsoft.com”用作符号服务器。
在调试期间,我还要确保已加载“ System.Web.Mvc.dll”(用于MvcHandler的dll)。
我认为我同时获得了源代码和pdb,但仍然出现错误:“此文档未加载任何符号”。我想知道我还可以采取什么其他步骤来解决这个问题。
我读过的其他一些文章
答案 0 :(得分:1)
您无需下载MVC 5源代码,符号和源服务器的重点是在调试时根据需要为您获取这些源文件。
我使用“ https://referencesource.microsoft.com”作为符号服务器
这可能是您的问题-.NET Framework的参考源仅 。为了获取MVC 5符号和源文件,您需要添加其他符号服务器,例如SymbolSource-请参见http://www.symbolsource.org/Public/Wiki/Using。
您还应该注意,有关使用符号调试的许多信息已过时。尤其是在VS 2017及更高版本中,“工具”>“选项”>“调试”>“常规”下有一个名为“使用托管兼容模式”的新选项,应未选中。
如果所有其他方法均失败,则由于您的计算机上已经有MVC源,因此只需将解决方案指向-通过删除MVC DLL引用并包括并引用解决方案中的相关项目,或者替换MVC DLL引用引用您自己的本地编译的DLL。与使用符号服务器相比,这要花费很多精力和精力,但是它也是100%可靠的。
出于故障排除的目的,“模块”窗口(“调试”>“ Windows”>“调试时的模块”)非常有用;它会向您显示项目中加载了哪些DLL,为其加载了哪些PDB以及从何处加载了哪些PDB,如果未加载PDB,它将告诉您原因。您还可以通过右键单击特定的DLL并浏览到其位置来手动强制加载PDB。
答案 1 :(得分:0)
我解决了我的问题。 我没有使用Asp.net Mvc 5.2.4,而是在这里下载了最新的Mvc软件包:https://dotnet.myget.org/feed/aspnetwebstack-dev/package/nuget/Microsoft.AspNet.Mvc 这对我来说是个窍门(我所做的所有其他事情都保持不变)。
因此,如果一个版本不适合您,请尝试其他版本!