【问题标题】:Debugging .net using SOS使用 SOS 调试 .net
【发布时间】:2010-11-22 10:56:19
【问题描述】:

我使用 clrdump 创建了一个转储。当我使用sos查看它时,我加载了sos然后运行!dso,但我得到的错误是:

PDB symbol for mscorwks.dll not loaded

但是,在模块窗口中,它表示符号已加载。我从 MS 商店获得了最新的符号?

有人有什么想法吗?

谢谢,

达伦。

【问题讨论】:

    标签: .net debugging windbg sos


    【解决方案1】:

    mscorwks.dll 的符号并不真正需要 !dso 的符号才能正常工作,但这里有一些关于如何获取符号的建议。

    您需要做的第一件事是验证您是否设置了符号路径?您可以使用.sympath 命令查看符号路径的当前设置。您可以下载所有符号并将符号路径指向光盘上的位置,或者只使用在线符号服务器。在任何一种情况下,符号路径都必须指向正确的位置。

    您可以使用.symfix 命令指向Microsoft 的公共符号服务器,这可能是获取符号的最简单方法(前提是您可以在线访问)。

    使用lm 命令查看模块及其符号。如果它在模块旁边显示pdb symbols,则一切正常。请记住,WinDbg 只会根据需要加载符号,因此对于很多模块,您可能会看到deferred。您可以使用.reload /f 命令强制为所有模块加载符号。

    要解决符号加载问题,请使用!sym noisy 命令。它会告诉您调试器试图定位 PDB 文件的位置。

    【讨论】:

    • 您好,sym noise 命令对我不起作用。它说错误:缺少操作数?有什么想法吗?
    • @Darren:你是否包含了!?命令为!sym,参数为noisy
    • 我做到了。我已经尝试过使用 Windbg 而不是 VS 调试器,它工作正常。谢谢。
    【解决方案2】:
    !sym noisy    
    .symfix
    .reload -f
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-08
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多