Files

35 lines
901 B
C++

#ifndef CRASH_HANDLER_H
#define CRASH_HANDLER_H
// allow-include-after-namespace
// Determine which crash handler implementation to use
#ifdef _WIN32
#include "crash_handler_win.h"
namespace impl = crash_handler_win;
#elif defined(USE_LIBUNWIND)
#include "crash_handler_libunwind.h"
namespace impl = crash_handler_libunwind;
#elif __has_include(<execinfo.h>)
#define USE_EXECINFO 1
#include "crash_handler_execinfo.h"
namespace impl = crash_handler_execinfo;
#else
#include "crash_handler_noop.h"
namespace impl = crash_handler_noop;
#endif
// Unified interface - these functions will dispatch to the appropriate implementation
inline void crash_handler(int sig) {
impl::crash_handler(sig);
}
inline void print_stacktrace() {
impl::print_stacktrace();
}
inline void setup_crash_handler() {
impl::setup_crash_handler();
}
#endif // CRASH_HANDLER_H