【问题标题】:"No Source Available" - Visual Studio Debugging (even when symbols have loaded)“无可用源” - Visual Studio 调试(即使已加载符号)
【发布时间】:2012-03-23 17:38:46
【问题描述】:

我已设置Visual Studio 2012 Professional 来下载调试符号。设置正确,符号已下载。

我到达了我希望进入的代码行:

bool result = Membership.ValidateUser("user", "password");

我右键单击它并选择step into specific-->Membership.ValidateUser()

然后在 Visual Studio 中打开一个选项卡:

No Source Available - 当前位置没有可用的源代码

Membership.ValidateUser() 位于 System.Web.Security 命名空间中,该命名空间位于 System.Web.dll 中。如果我打开 Modules 窗口,我可以清楚地看到该程序集的符号已下载。

如果符号在那里,为什么我无法进入源代码?

【问题讨论】:

  • this。向下滚动到“常见问题解答/疑难解答”并查看第 3 步。
  • 谢谢Lander,这一步我试过了,但问题没有解决。

标签: c# visual-studio debugging


【解决方案1】:

【讨论】:

  • 嗨,Richard,我尝试通过将光标放在方法调用上并按 F12 打开源类定义,但它不允许我设置任何断点。你闯入源代码是什么意思?我怎么做?我刚刚右键单击该方法并选择“进入特定步骤”。此外,调用堆栈中的所有帧都已经加载了它们的符号。没有一个是灰色的,如果我右键单击菜单中的“加载符号”是灰色的。你提到的其他设置我已经正确了。
  • 我认为这不是问题,因为 .net 4.0 是很久以前发布的。事实上,他们正准备发布 4.5 并且我已经确定我正在成功下载与我的 .net 版本匹配的 System.Web.pdb 文件,尽管它没有进入源代码。跨度>
  • @FunkyFresh84 我想你只需要检查一下 System.Web.dll 是否已经打了补丁/热修复。
  • Richard,我正在尝试按照您提供的链接中的 Cory Plotts 帖子中所述下载源代码和符号的方法。我已下载 .net 4.0 源并将其安装到我的 C:\Users\Duncan\Documents\RefSrc 文件夹中。我现在如何配置 VS 以在此位置使用源代码和符号?谢谢
  • @FunkyFresh84 我不认为它对你有用,因为 4.5 有一个新版本的 System.Web.dll 被 4.0 使用。如果要调试 4.0,则需要在干净的机器或 VM 上安装 4.0(例如,使用 VS2010)。查看 4.5 对 ASP.NET(当然包括 System.Web.dll)的更改:asp.net/vnext/overview/whitepapers/whats-new#_Toc318097382。如果您删除符号缓存(或移动位置),它将尝试下拉版本。选择 4.0 下拉的版本,与目标 4.5 使用的 System.Web.dll 版本相同。
【解决方案2】:

您可能拥有符号,但您没有拥有源代码。 PDB 不足以进行调试,但它们必须将您的源代码与可执行文件链接起来。 PDB 非常适合报告错误,因为它们提供了调用堆栈的详细信息,但要进行调试,您需要有源代码。

【讨论】:

  • 如果我有 .net framework 4.0 那么我应该有源代码,因为 System.Web.dll 是 .net 的一部分 - 那么为什么 VS 看不到源代码,我该怎么做解决这个问题?
  • System.Web.dll 只是编译后的代码。您需要从 System.Web 获得 .cs 或 .vb 文件
  • @Adauto 对不起,你错了。这就是符号的用途。 dll 被解除,符号可以看到方法的名称等。
  • 来自 blogs.msdn.com/b/sburke/archive/2008/01/16/... 常见问题解答(3 看起来他在某种程度上是正确的,而 PDB 有调用堆栈信息等。它可能仍然会丢失源代码,从 referenceserver.microsoft.com/symbols 下载时,您实际上会在 temp 文件夹中获得一个 .cs 文件
【解决方案3】:

我遇到了类似的问题,我就是这样解决的。

右击你的项目 -> 属性 -> 编译 -> 高级编译选项...

然后从下拉菜单中将“生成调试信息”设置为“完整”。

希望对您有所帮助。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,就我而言,它是 4.0 版而不是 4.5,但仍然是同样的问题。

    在与提琴手检查后,似乎对于许多 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 有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      相关资源
      最近更新 更多