summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/stacktrace/example/debug_function.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/stacktrace/example/debug_function.cpp')
-rw-r--r--src/boost/libs/stacktrace/example/debug_function.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/boost/libs/stacktrace/example/debug_function.cpp b/src/boost/libs/stacktrace/example/debug_function.cpp
new file mode 100644
index 00000000..7b14db80
--- /dev/null
+++ b/src/boost/libs/stacktrace/example/debug_function.cpp
@@ -0,0 +1,33 @@
+// Copyright Antony Polukhin, 2016-2019.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+//[getting_started_debug_function
+#include <signal.h> // ::signal
+#include <boost/stacktrace/frame.hpp>
+#include <iostream> // std::cerr
+#include <cstdlib> // std::exit
+
+void print_signal_handler_and_exit() {
+ typedef void(*function_t)(int);
+
+ function_t old_signal_function = ::signal(SIGSEGV, SIG_DFL);
+ boost::stacktrace::frame f(old_signal_function);
+ std::cout << f << std::endl;
+ std::exit(0);
+}
+//]
+
+
+void my_signal_handler(int /*signum*/) {
+ std::exit(1);
+}
+
+int main() {
+ ::signal(SIGSEGV, &my_signal_handler);
+ print_signal_handler_and_exit();
+}
+
+