从紧凑框架分析托管调用堆栈

本文关键字:调用 堆栈 框架 | 更新日期: 2023-09-27 18:21:09

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

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

谢谢,PaulH

从紧凑框架分析托管调用堆栈

检查以确保以下几点:

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