// file : libbutl/backtrace.mxx -*- C++ -*- // copyright : Copyright (c) 2014-2019 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef __cpp_modules_ts #pragma once #endif // C includes. #ifndef __cpp_lib_modules_ts #include #endif // Other includes. #ifdef __cpp_modules_ts export module butl.backtrace; #ifdef __cpp_lib_modules_ts import std.core; #endif #endif #include LIBBUTL_MODEXPORT namespace butl { // Return the calling thread's backtrace or empty string if this // functionality is not supported or an error has occurred. The exact // backtrace format is implementation-defined; it normally contains a line // with the binary name, address in that binary, and, if available, the // function name for each stack frame. // // Currently this functionality is only available on Linux, FreeBSD, and Mac // OS. On the first two platforms the address can be mapped to the function // name and, if built with debug info, to source location using the // addr2line(1) utility: // // $ addr2line -f -C -e // LIBBUTL_SYMEXPORT std::string backtrace () noexcept; }