Skip to content

Latest commit

 

History

History
35 lines (29 loc) · 1.7 KB

README.md

File metadata and controls

35 lines (29 loc) · 1.7 KB

trace - portable exception backtracing in C++17

CI Coverage

This library uses std::nested_exception and std::throw_with_nested and can be applied in order to not lose information while propagating an original std::exception upwards through a chain of function calls and create a backtrace without any overhead (compare e.g. logging of debug messages). This avoids much of the need for any debugging and provides a way of ensuring that a library does not crash ungracefully.

Usage

#include <trace/trace.hpp>

The library revolves around three macros

  • trace::initiate: can be placed anywhere. Takes a std::string message and initiates a trace with information about the corresponding function and source file. This is done by throwing an exception.
  • trace::propagate: should be placed in a catch-block. Takes a std::string message, attaches it to the trace and propagates the trace up the function call stack by rethrowing a nested exception
  • trace::handle: should be placed in a catch-block. Takes a std::exception & and unwraps it to creates a backtrace

and the function trace::latest(), which returns the most recent backtrace, created by the call to handle.