我收到了我們在應用程序中看到的堆棧溢出異常的跟蹤轉儲。 我們最終在沒有使用跟蹤轉儲的情況下發現問題,但我很好奇:如何使用堆棧跟蹤轉儲來調試異常?
如何在將來使用線程的跟蹤轉儲來更快地診斷問題?
我知道函數名後面的十六進制數是編譯代碼中的某種偏移量。我不知道底部五行中的四行是什麼意思(以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
注:我不要求在調試這個具體問題的幫助,但我怎麼可以用這樣的調試未來的問題時,我所有的源代碼和跟蹤轉儲。