1

我有一个由在 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.

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

谢谢,保罗

4

1 回答 1

0

检查以确保以下几点:

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)时。

于 2012-02-11T15:00:35.323 回答