Nếu bạn muốn bắt tất cả các tai nạn bạn phải làm nhiều hơn là chỉ: SetUnhandledExceptionFilter
Tôi cũng sẽ thiết lập xử lý hủy bỏ, xử lý purecall, bất ngờ, chấm dứt, và xử lý tham số không hợp lệ.
#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();
}
Và trong đặt chính của bạn này:
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);
trên sẽ gửi tất cả các tai nạn để xử lý ngoại lệ unhandled của bạn.
Nguồn
2008-10-22 01:38:42