【问题标题】:Analyzing a managed callstack from the compact framework从紧凑框架分析托管调用堆栈
【发布时间】:2012-01-20 22:09:17
【问题描述】:

我有一个由在 Windows Mobile 6.5 ARMV4I 上运行的 C# .NET CF 3.5 应用程序生成的事后 kdmp,我想在 WinDBG X86 6.12.0002.633 中进行分析。

我能够获得非托管调用堆栈,但这并不能告诉我我在 .net 应用程序中的更多信息。

在大窗口中,我可以使用 SOS 进行!clrstack,但 CF 没有加载 mscorwks.dll。

17:362:armce> !clrstack
Failed to find runtime DLL (mscorwks.dll), 0x80004005
Extension commands need mscorwks.dll in order to have something to do.

我需要做什么来分析紧凑框架生成的转储文件?

谢谢, 保罗H

【问题讨论】:

    标签: c# .net compact-framework postmortem-debugging


    【解决方案1】:

    检查以确保以下几点:

    1 - 为正确版本的框架正确加载 SOS

    对于 2.0 -> C:\windows\Microsoft.NET\Framework\v2.0.50727\sos.dll

    对于 4.0 -> C:\windows\Microsoft.NET\Framework\v4.0.30319\sos.dll

    2 - 确保为分析转储的进程使用正确版本的 sos。

    对于使用 .net 4.0 的进程,加载 4.0 框架的 sos.dll,同样适用于其他框架。

    因此,您收到错误的可能原因是您没有为正在分析的进程加载正确的 sos.dll。

    通常我会将SOS.dll复制到调试器目录并改名为

    .NET 2.0 版本的 SOS20.dll 和 .NET 4.0 的 SOS40.dll

    然后使用

    在调试器中加载 dll

    .load SOS20.dll 当需要调试在.NET 2.0 上运行的进程或加载其他版本时(.load SOS40.dll)。

    【讨论】:

    • 从哪里获得 compact 框架的 SOS.dll?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多