我已设置Visual Studio 2012专业版来下载调试符号。它设置正确,符号已下载。
我到达了我想要介入的代码行:
bool result = Membership.ValidateUser("user", "password");
我右键单击它并选择step into specific-->Membership.ValidateUser()
然后在Visual Studio中打开一个选项卡,说:
无可用来源 - 当前位置没有可用的源代码
Membership.ValidateUser()
位于System.Web.Security
中的System.Web.dll
命名空间中。如果我打开模块窗口,我可以清楚地看到已经下载了该程序集的符号。
如果符号在那里,为什么我无法进入源代码?
答案 0 :(得分:2)
您可能拥有符号,但 DO Not 拥有源代码。 PDB不足以进行调试,但它们必须将源代码与可执行文件链接起来。 PDB很好地报告错误,因为它们提供了调用堆栈的详细信息,为了调试,你需要有源代码。
答案 1 :(得分:2)
源步进仅适用于RTM或SP版本。请参阅 PDB files for .NET Framework 3.5 SP1 not available! (i.e. System.Web.pdb 2.0.50727.4016) 。
答案 2 :(得分:1)
我遇到了同样的问题,在我的情况下它是版本4.0而不是4.5,但仍然是同样的问题。
使用fiddler检查后,对于许多DLL文件,似乎referenceserver.microsoft.com上的服务器返回404,然后Visual Studio退回并从msdl.microsoft.com上的Microsoft符号服务器下载,该服务器不包含实际的源代码。
因此,在一天结束时,使用Microsoft代码的源代码似乎并不总是有效,并且可能会使用.NET Reflector。
我刚刚找到另一个Stack Overflow回答, .NET framework source stepping not working despite options set ,根据它,问题可能与SP1有关。
答案 3 :(得分:1)
我有类似的问题,这就是我解决它的方法。
右键单击您的项目 - >属性 - >编译 - >高级编译选项......
然后设置'生成调试信息'到' Full'从下拉菜单中。
希望有所帮助。