#include "mix_cc/stacktrace/stacktrace.h" namespace mix_cc { typedef boost::error_info traced; void mix_cc_signal_handler(int signum) { ::signal(signum, SIG_DFL); boost::stacktrace::safe_dump_to("./backtrace.dump"); ::raise(SIGABRT); } std::string auto_check_dump() { std::ostringstream oss; if (boost::filesystem::exists("./backtrace.dump")) { // there is a backtrace std::ifstream ifs("./backtrace.dump"); boost::stacktrace::stacktrace st = boost::stacktrace::stacktrace::from_dump(ifs); oss << "Previous run crashed:\n" << st << std::endl; // cleaning up ifs.close(); boost::filesystem::remove("./backtrace.dump"); } return oss.str(); } } // namespace mix_cc