Si se desea capturar todos los accidentes que tienen que hacer algo más que: SetUnhandledExceptionFilter
También me gustaría establecer el manejador de interrupción, el manejador purecall, inesperada, terminar, y el manejador de parámetros no válido.
#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();
}
Y en su puesto principal de esto:
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);
Lo anterior le enviará todos los accidentes a su manejador de excepción no controlada.