分析WinDbg中的CLR .dmp文件

Pau*_*ulH 4 c# debugging windbg

我有一个在Visual Studio 2008中创建的C#.NET 3.5应用程序崩溃在没有开发环境的Windows XP SP3(x86)PC上.

我已经能够从PC获取.dmp文件并将其恢复到我的Windows 7 64位开发PC并将其加载到WinDbg 6.12中.

但是,我无法从C#应用程序中看到调用堆栈中的任何代码.看起来它完全是本机调用堆栈.

结果!analyze -v如下.

我有相关的EXE,DLL和PDB文件与.DMP在同一目录中.崩溃的可执行文件是在调试模式下编译的.

我也有Visual Studio 2008,如果它更容易使用.但是在那里打开转储文件也只显示本机调用堆栈,而不是我的代码.

如何查看CLR调用堆栈?

0:004> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


FAULTING_IP:
kernel32!RaiseException+53
7c812afb 5e              pop     esi

EXCEPTION_RECORD:  0392f018 -- (.exr 0x392f018)
ExceptionAddress: 7c812afb (kernel32!RaiseException+0x00000053)
   ExceptionCode: e0434f4d (CLR exception)
  ExceptionFlags: 00000001
NumberParameters: 1
   Parameter[0]: 80070057

PROCESS_NAME:  foo.exe

ERROR_CODE: (NTSTATUS) 0xe0434f4d - <Unable to get error code text>

EXCEPTION_CODE: (NTSTATUS) 0xe0434f4d - <Unable to get error code text>

EXCEPTION_PARAMETER1:  80070057

MOD_LIST: <ANALYSIS/>

MANAGED_STACK: !dumpstack -EE
No export dumpstack found

MANAGED_BITNESS_MISMATCH:
Managed code needs matching platform of sos.dll for proper analysis. Use 'x86' debugger.

ADDITIONAL_DEBUG_TEXT:  Followup set based on attribute [Is_ChosenCrashFollowupThread] from Frame:[0] on thread:[PSEUDO_THREAD]

LAST_CONTROL_TRANSFER:  from 79ef2bfc to 7c812afb

FAULTING_THREAD:  ffffffff

DEFAULT_BUCKET_ID:  STACKIMMUNE

PRIMARY_PROBLEM_CLASS:  STACKIMMUNE

BUGCHECK_STR:  APPLICATION_FAULT_STACKIMMUNE_NOSOS_CLR_EXCEPTION

STACK_TEXT:
00000000 00000000 foo.exe+0x0


SYMBOL_NAME:  foo.exe

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: foo

IMAGE_NAME:  foo.exe

DEBUG_FLR_IMAGE_TIMESTAMP:  4d5da0cd

STACK_COMMAND:  ** Pseudo Context ** ; kb

FAILURE_BUCKET_ID:  STACKIMMUNE_e0434f4d_foo.exe!Unknown

BUCKET_ID:  APPLICATION_FAULT_STACKIMMUNE_NOSOS_CLR_EXCEPTION_foo.exe

Followup: MachineOwner
---------
Run Code Online (Sandbox Code Playgroud)

Nav*_*een 6

托管代码需要sos.dll的匹配平台才能进行正确分析.使用'x86'调试器.

您必须使用x86调试器/ WinDbg来调试x86内存转储.使用.loadby sos mscorwks加载适当的SOS.您还可以使用该.chain命令验证是否正确加载了扩展.

苔丝有一些很好的调试教程.