【问题标题】:Cannot load symbols, or break in core assemblies, loading Symbols option grayed out无法加载符号,或中断核心程序集,加载符号选项灰显
【发布时间】:2011-03-06 19:30:38
【问题描述】:

我设置了“使用符号服务器”选项,为了确保加载了正确的符号,我删除了符号缓存。在运行我的 ASP.NET 应用程序时,我看到弹出窗口告诉我正在下载符号。

我已禁用“仅我的代码”,并启用了“启用 .NET Framework 源代码步进”。在过去,这足以单步执行 .NET 代码库。

当我使用 IntelliTrace 中断时,调用堆栈中的所有非用户代码都显示为灰色。检查它显示的模块窗口,例如 System.Web.Dll 和 mscorlib 的 System..dll 和 System.Xml.dll “未加载符号”,它显示“已加载符号”。

通常您可以右键单击并选择“加载符号”,但这会显示为灰色。有什么办法让它再次工作吗?

http://www.undermyhat.org/blog/wp-content/uploads/2011/03/Grayed-out-Load-Symbols.png

【问题讨论】:

  • 调试 + Windows + 模块。 “符号负载信息”是什么意思?
  • @Hans Passant:符号状态给出“符号未加载”(见上文)。

标签: c# visual-studio-2010 debugging debug-symbols


【解决方案1】:

因为符号加载可能很麻烦,而且您并不总是对每个符号表感兴趣,所以可以选择手动加载特定的符号表。显示为灰色的原因是因为您正在自动加载它们。这是手动设置并启用选项的屏幕截图。

为了进入这种状态,我设置了我的符号设置以加载除此之外的所有符号,并将 NHibernate 添加到列表中。当我进入 NHibernate 时,符号是灰色的,可以手动加载:

然后我可以选择加载它们:

【讨论】:

  • +1 因为你给我指出了正确的方向。但解决方案似乎有所不同。你提出的,我已经试过了,但没有成功。但是,为什么它没有加载符号是因为 (1) 我单击了 IntelliTrace 历史记录中的异常,并且 (2) 程序已经因无法捕获的异常(ASPX 编译错误)而崩溃。中断任意函数(使用函数中断)有效,然后我可以像以前那样加载符号。我们应该升级你的答案还是我应该添加我的?
  • 我会尝试合并它们以供参考。
  • 实际上,让它们分开,您可以添加并标记它。这将是最有意义的。
【解决方案2】:

Ritch's answer 为我指明了正确的方向,但这不是解决方案。这是发生了什么:

当您在 IntelliTrace 的历史事件中单击调用堆栈时,这将显示堆栈跟踪。通常,在堆栈跟踪中,您可以右键单击并加载符号,但是:

  • 从 IntelliTrace 历史事件中,这将始终被禁用。在您的代码中正常中断,这将起作用;
  • 在历史事件中,您甚至无法从模块视图中加载符号(也显示为灰色);
  • 当一个模块被指定为“总是手动加载”(恰当地命名为“默认”,参见 Ritch 帖子中的截图)时,它不会自动加载。当您手动加载它时,仍然无法进入框架代码(至少,这对我来说是不可能的,可能是 VS 2010 的错误)。要解决这个问题:
    • 选择“始终自动加载”(注意:您不会看到表示您选择了此选项的复选标记!)并
    • 中断执行和
    • (可以说)停止开发 Web 服务器(这在某些情况下对我有帮助)
    • 再次开始调试。

说实话,我发现 Visual Studio 的这种相对不清楚的行为。在过去,我显然很幸运能够正确设置设置。这不是“它只是工作”,而是只有当你仔细地通过正确的程序时,它才会按预期工作。

【讨论】:

    猜你喜欢
    • 2016-01-11
    • 2017-03-24
    • 1970-01-01
    • 2012-08-09
    • 2014-02-05
    • 2021-02-12
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多