Version 0.8.0
Added:
- Added support for resolving symbols from elf and mach-o symbol tables, allowing function names to be resolved even in
a build that doesn't include debug information #201 - Added a configurable stack trace formatter #164
- Added configuration options for the libdwarf back-end that can be used to lower memory usage on memory-constrained
systems #193 - Added
cpptrace::nullable<T>::null_value - Made
cpptrace::nullable<T>member functions conditionallyconstexprwhere possible
Fixed:
- Fixed handling of
SymInitializewhen other code has already calledSymInitialize.SymInitializemust only be
called once per handle and cpptrace now attempts to duplicate the current process handle to avoid conflicts.
#204 - Fixed a couple of locking edge cases surrounding dbghelp functions
- Fixed improper deallocation of
dwarf_errmsgin the libdwarf back-end
Breaking changes:
cpptrace::get_snippetpreviously included a newline at the end but it now does not. This also affects the behavior
of trace formatting with snippets enabled.
Other:
- Significantly improved memory usage and performance of the libdwarf back-end
- Improved implementation and organization of internal utility types, such as
optionalandResult - Improved trace printing and formatting implementation
- Added unit tests for library internal utilities
- Added logic to the cxxabi demangler to ensure external names begin with
_Zor__Zbefore attempting to demangle - Added various internal tools and abstractions to improve maintainability and clarity
- Various internal improvements for robustness
- Added a small handful of utility tool programs that are useful for continued development, maintenance, and debugging
- Improved library CI setup
- Marked the
CPPTRACE_BUILD_BENCHMARKoption as advanced