diff options
Diffstat (limited to 'src/boost/libs/stacktrace/example/debug_function.cpp')
-rw-r--r-- | src/boost/libs/stacktrace/example/debug_function.cpp | 33 |
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(); +} + + |