6

我设置了“使用符号服务器”选项,为了确保加载了正确的符号,我删除了符号缓存。运行我的 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

4

2 回答 2

3

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

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

然后我可以选择加载它们: 在此处输入图像描述

于 2011-03-06T20:01:53.127 回答
3

里奇的回答为我指明了正确的方向,但这不是解决方案。这是发生的事情:

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

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

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

于 2011-03-10T13:33:56.713 回答