61 lines
1.9 KiB
C++
61 lines
1.9 KiB
C++
#ifndef CRASHELPER_H
|
|
#define CRASHELPER_H
|
|
|
|
#if defined(_WIN32) || defined(_WIN64)
|
|
#define WIN_OS
|
|
#include <windows.h>
|
|
#if defined(min)
|
|
#undef min
|
|
#endif
|
|
#elif defined(__APPLE__) && defined(__MACH__)
|
|
#define MAC_OS
|
|
#elif defined(__linux__)
|
|
#define LINUX_OS
|
|
#define BACKWARD_HAS_BFD 1
|
|
#else
|
|
#error "Unsupported OS"
|
|
#endif
|
|
|
|
#include "backward.hpp"
|
|
#include <string>
|
|
#ifdef USE_BOOST
|
|
#include <boost/filesystem.hpp>
|
|
namespace fs = boost::filesystem;
|
|
#else
|
|
#include <filesystem>
|
|
namespace fs = std::filesystem;
|
|
#endif
|
|
|
|
namespace backward {
|
|
///
|
|
/// @brief 设置dump文件的保存目录,不设置默认当前目录。
|
|
/// @param path 若不存在则创建,创建失败返回false
|
|
///
|
|
bool SetDumpFileSavePath(const std::string& path);
|
|
|
|
///
|
|
/// @brief 设置dump日志文件的保存目录,不设置默认当前目录。
|
|
/// @param path 若不存在则创建,创建失败返回false
|
|
///
|
|
bool SetDumpLogSavePath(const std::string& path);
|
|
|
|
std::string GetCurFullLogPath();
|
|
#if defined(WIN_OS)
|
|
void UseExceptionHandler(EXCEPTION_POINTERS* exception);
|
|
#endif
|
|
|
|
} // namespace backward
|
|
|
|
#ifdef WIN_OS
|
|
#define CRASHELPER_MARK_ENTRY() \
|
|
backward::SignalHandling sh; \
|
|
sh.register_crash_use_handler([](EXCEPTION_POINTERS* exception) { backward::UseExceptionHandler(exception); }); \
|
|
sh.register_crash_path([]() -> std::string { return backward::GetCurFullLogPath(); })
|
|
#elif defined(MAC_OS)
|
|
#elif defined(LINUX_OS)
|
|
#define CRASHELPER_MARK_ENTRY() \
|
|
backward::SignalHandling sh; \
|
|
sh.register_crash_path([]() -> std::string { return backward::GetCurFullLogPath(); })
|
|
#endif
|
|
|
|
#endif // CRASHELPER_H
|