我目前使用SetUnhandledExceptionFilter
捕获未处理异常的MiniDump,但是有时我会收到“R6025:纯虚函数”。
我了解纯虚拟函数调用是如何发生的,我只是想知道是否有可能捕获它们,因此我可以在那时创建一个MiniDump。
最佳答案
如果要捕获所有崩溃,您不仅需要执行以下操作:SetUnhandledExceptionFilter
我还将设置中止处理程序,purecall处理程序,意外,终止和无效的参数处理程序。
#include <signal.h>
inline void signal_handler(int)
{
terminator();
}
inline void terminator()
{
int*z = 0; *z=13;
}
inline void __cdecl invalid_parameter_handler(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)
{
terminator();
}
并在您的主要内容中输入:
signal(SIGABRT, signal_handler);
_set_abort_behavior(0, _WRITE_ABORT_MSG|_CALL_REPORTFAULT);
set_terminate( &terminator );
set_unexpected( &terminator );
_set_purecall_handler( &terminator );
_set_invalid_parameter_handler( &invalid_parameter_handler );
上面的代码会将所有崩溃发送到未处理的异常处理程序。