// file : libbutl/backtrace.mxx -*- C++ -*- // 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 (with glibc), // FreeBSD/NetBSD, 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; }