我收到了我们在应用程序中看到的堆栈溢出异常的跟踪转储。 我们最终在没有使用跟踪转储的情况下发现问题,但我很好奇:如何使用堆栈跟踪转储来调试异常?
如何在将来使用线程的跟踪转储来更快地诊断问题?
我知道函数名后面的十六进制数是编译代码中的某种偏移量。我不知道底部五行中的四行是什么意思(以0x开头的行)。我假定这是指我们应用程序代码中的一个位置;如果是这样,是否有方法可以确定应用程序中该行的来源?
ntdll!ZwTerminateProcess
KERNELBASE!TerminateProcess+2c
clr!EEPolicy::HandleFatalStackOverflow+1c9
clr!EEPolicy::HandleStackOverflow+1ac
clr!COMPlusFrameHandler+9b
ntdll!ExecuteHandler+26
ntdll!ExecuteHandler+24
ntdll!RtlDispatchException+127
ntdll!KiUserExceptionDispatcher+f
//Cut 40 lines here...
clr!MethodDesc::DoPrestub+59d
clr!ReflectionInvocation::CompileMethod+54
mscorlib_ni+393a09
mscorlib_ni+34e3bc
System_Core_ni+1bf152
System_Core_ni+1bb05e
System_Core_ni+3d0f57
0x2413854b
0x23df1ad3
clr!ArrayNative::ArrayCopy+3ce
0x20e680b9
0x20e61c65
注:我不要求在调试这个具体问题的帮助,但我怎么可以用这样的调试未来的问题时,我所有的源代码和跟踪转储。