我目前使用 SetUnhandledExceptionFilter
捕获未处理异常的 MiniDump,但有时我会收到“R6025:纯虚函数”。
我了解纯虚函数调用是如何发生的,我只是想知道是否可以捕获它们,以便我可以在那时创建一个 MiniDump。
最佳答案
如果你想捕捉所有崩溃,你必须做的不仅仅是:SetUnhandledExceptionFilter
我还将设置中止处理程序、纯调用处理程序、意外、终止和无效参数处理程序。
#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 );
以上内容会将所有崩溃发送到您的未处理异常处理程序。
关于c++ - 捕获 R6025 纯虚拟调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224163/