我试图在收到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