从紧凑框架分析托管调用堆栈
本文关键字:调用 堆栈 框架 | 更新日期: 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)时。