故障转储分析:CxxUnhandledExceptionFilter [英] Crashdump analyzing: CxxUnhandledExceptionFilter

查看:299
本文介绍了故障转储分析:CxxUnhandledExceptionFilter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个崩溃迷你转储文件来分析.我的程序是Qt5多线程应用程序.我不是调试专家,但通常我可以轻松找到程序失败的地方,但是这次我找不到.我在Visual Studio 2010中打开了转储文件,单击仅使用本机调试",它向我显示了问题所在:它是位置为"__CxxUnhandledExceptionFilter"的线程.调用堆栈是这样的:

I've got a crash minidump to analyze. My program is multithread Qt5 application. I'm not a debugging guru but usualy I can easily find place where program failed, but this time I can't. I opened dump file in Visual Studio 2010, clicked "Debug with native only" and it shows me where problem is: it is thread with location "__CxxUnhandledExceptionFilter". Call stack is like this:

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

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

I expected to see stack with program functions and Qt internal functions. But this call stack tells me nothing interesting. So please tell me what is the "ExceptionFilter"-thread and how can I find place where program failed actually?

推荐答案

您正在查看应用程序,其中默认的异常过滤器已经捕获了未处理的异常.

You are viewing the application at the point where the unhandled exception has already been caught by the default exception filter.

也就是说,您看不到发生异常的行.

That is, you are not seeing the line where the exception occurred.

不幸的是,这意味着小型转储可能不包含有用的信息.

Unfortunately, this means the minidump likely contains no useful information.

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

You might try inspecting the _EXCEPTION_POINTERS structs, it might contain the EIP of the instruction that triggered the unhandled exception.

请参见pPtrs->ExceptionRecord->ExceptionAddress的值,该值应包含EIP.

See the value of pPtrs->ExceptionRecord->ExceptionAddress, that should hold the EIP.

从MSDN:

ExceptionAddress:发生异常的地址.

ExceptionAddress: The address where the exception occurred.

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

To get the stack trace at the point where the exception occured, read http://support.microsoft.com/kb/313109.

这篇关于故障转储分析:CxxUnhandledExceptionFilter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆