我試圖在收到SIGSEGV時使用DbgHelp.dll中的StackWalk64函數獲取堆棧跟蹤,但獲取的堆棧跟蹤與訪問的實際站點無關違反:在Windows上訪問衝突後獲取堆棧跟蹤
[0] sigsegv_handler() e:\hudson\jobs\ide-nightly-trunk\workspace\ide-nightly-trunk\core\ide\cspyserver\src\stackwalker\cssstackwalker.cpp:31
[1] XcptFilter() C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2\MSVCR90.dll
[2] __tmainCRTStartup() f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c:603
[3] seh_longjmp_unwind4() C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2\MSVCR90.dll
[4] BaseThreadInitThunk() C:\Windows\syswow64\kernel32.dll
[5] RtlCreateUserProcess() C:\Windows\SysWOW64\ntdll.dll
[6] RtlCreateProcessParameters() C:\Windows\SysWOW64\ntdll.dll
我懷疑怪異的窗口異常處理和setjmp/longjmp的參與,但我真的不知道我應該尋找。
是的,我知道我沒有任何保證,我可以得到一個完整的堆棧跟蹤,但這是關於獲取儘可能多的信息,當系統崩潰,所以部分或破碎stacktrace總比沒有好。 – JesperE