Crashdump分析:CxxUnhandledExceptionFilter

时间:2014-03-28 14:59:24

标签: c++ qt crash-dumps postmortem-debugging

我有一个崩溃的minidump进行分析。我的程序是多线程Qt5应用程序。我不是调试大师,但通常我很容易找到程序失败的地方,但这次我不能。我在Visual Studio 2010中打开了转储文件,单击了#34;仅使用本机调试"它告诉我问题在哪里:它是带位置的线程" __ CxxUnhandledExceptionFilter"。调用堆栈是这样的:

msvcr100.dll()!_abort()
msvcr100.dll()!terminate()
program.exe!__CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS * pPtrs)
KERNELBASE.dll!_UnhandledExceptionFilter()
ntdll.dll!__RtlUserThreadStart()
ntdll.dll!__RtlUserThreadStart()

我希望看到有程序功能和Qt内部功能的堆栈。但是这个调用栈告诉我没有什么有趣的。那么请告诉我什么是" ExceptionFilter" -thread以及如何找到程序实际失败的地方?

1 个答案:

答案 0 :(得分:3)

您正在查看默认异常过滤器已捕获未处理异常的位置的应用程序。

也就是说,您没有看到发生异常的行。

不幸的是,这意味着minidump可能不包含任何有用的信息。

您可能会尝试检查_EXCEPTION_POINTERS结构,它可能包含触发未处理异常的指令的EIP

查看pPtrs->ExceptionRecord->ExceptionAddress的值,该值应包含EIP

来自MSDN:

  

ExceptionAddress:发生异常的地址。

要在发生异常的位置获取堆栈跟踪,请阅读http://support.microsoft.com/kb/313109