mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-24 15:00:35 +08:00
Printing backtrace on segfault
This commit is contained in:
@@ -4,9 +4,27 @@
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <uavcan/build_config.hpp>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <execinfo.h>
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static void sigsegv_handler(int sig)
|
||||
{
|
||||
const int BacktraceSize = 32;
|
||||
void* array[BacktraceSize];
|
||||
const int size = backtrace(array, BacktraceSize);
|
||||
|
||||
std::fprintf(stderr, "SIGNAL %d RECEIVED; STACKTRACE:\n", sig);
|
||||
backtrace_symbols_fd(array, size, STDERR_FILENO);
|
||||
std::exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
signal(SIGSEGV, sigsegv_handler);
|
||||
|
||||
#ifndef UAVCAN_CPP_VERSION
|
||||
# error UAVCAN_CPP_VERSION
|
||||
#endif
|
||||
@@ -17,6 +35,7 @@ int main(int argc, char **argv)
|
||||
#else
|
||||
# error UAVCAN_CPP_VERSION
|
||||
#endif
|
||||
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user