コード例 #1
0
void CrashHandlerPOSIX::unregisterCrashHandlers() {
	
	unregisterThreadCrashHandlers();
	
	removeCrashHandlers(m_pPreviousCrashHandlers);
	
	delete m_pPreviousCrashHandlers;
	m_pPreviousCrashHandlers = 0;
}
コード例 #2
0
void CrashHandlerWindows::unregisterCrashHandlers() {
    unregisterThreadCrashHandlers();

    SetUnhandledExceptionFilter(m_pPreviousCrashHandlers->m_SEHHandler);
    _set_purecall_handler(m_pPreviousCrashHandlers->m_pureCallHandler);
    _set_new_handler(m_pPreviousCrashHandlers->m_newHandler);
    _set_invalid_parameter_handler(m_pPreviousCrashHandlers->m_invalidParameterHandler);
    signal(SIGABRT, m_pPreviousCrashHandlers->m_SIGABRTHandler);
    signal(SIGINT, m_pPreviousCrashHandlers->m_SIGINTHandler);
    signal(SIGTERM, m_pPreviousCrashHandlers->m_SIGTERMHandler);

    if(!m_pPreviousCrashHandlers->m_threadExceptionHandlers.empty())
        LogWarning << "Some threads crash handlers are still registered.";

    delete m_pPreviousCrashHandlers;
    m_pPreviousCrashHandlers = 0;
}