Releases: jeremy-rifkin/cpptrace
Releases · jeremy-rifkin/cpptrace
Version 0.8.1
Fixed:
- Fixed compile error on msvc #215
Added:
- Added
cpptrace::can_get_safe_object_frame()
Breaking changes:
- Renamed ctrace's
can_signal_safe_unwind
toctrace_can_signal_safe_unwind
. This was an oversight. Apologies for
including a breaking change in a patch release. Github code search suggests this API isn't used in public code, at
least.
Other:
- Added CI workflow to test on old msvc
- Made some internal improvements on robustness and cleanliness
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 conditionallyconstexpr
where possible
Fixed:
- Fixed handling of
SymInitialize
when other code has already calledSymInitialize
.SymInitialize
must 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_errmsg
in the libdwarf back-end
Breaking changes:
cpptrace::get_snippet
previously 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
optional
andResult
- 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
_Z
or__Z
before 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_BENCHMARK
option as advanced
Version 0.7.5
Version 0.7.4
Added:
- Added
<cpptrace/version.hpp>
header with version macros
Fixes:
- Bumped libdwarf to 0.11.0 which fixes a number of dwarf 5 debug fission issues
Other:
- Various improvements to internal testing setup
Version 0.7.3
Fixed:
- Fixed missing include affecting macos #183
- Fixed issue with cmake not using the ccache program found by
find_program
#184 - Fixed missing include and warnings affecting mingw #186
- Fixed issue with identifying inlined call frames when the
DW_TAG_inlined_subroutine
is under aDW_TAG_lexical_block
- Fixed a typo in the README
- Improved unittest support on various configurations
- Improved unittest robustness under LTO
- Fixed bug signal_demo in the event
fork()
fails
Added:
- Added color overload for
stacktrace_frame::to_string
- Added CMake
export()
definition for cpptrace as well as a definition for libdwarf which currently doesn't provide one
Changed:
- Updated documentation surrounding the signal safe API
Version 0.7.2
Version 0.7.1
Added
Fixed
- Computation of object address for safe object frames #169
- Nested microfmt in cpptrace's namespace due to an ODR problem with libassert jeremy-rifkin/libassert#103
- Compilation on iOS #167
- Compilation on old MSVC #165
- Dbghelp use on 32 bit #170
- Warning in brand new cmake due to
FetchContent_Populate
being deprecated #171
Other changes
- Bumped the buffer size for execinfo and CaptureStackBackTrace to 400 frames
- Switched to execinfo.h for unwinding on clang/apple clang on macos due to
_Unwind
not working with-fno-exceptions
#161
Version 0.7.0
Added
- Added
cpptrace::from_current_exception()
and associated exception handler macros to allow tracing of all exceptions,
even without cpptrace traced exception objects.
Fixes:
- Fixed issue with using
resolve_safe_object_frame
onsafe_object_frame
s with empty paths - Fixed handling of dwarf 4 rangelist base addresses when a
DW_AT_low_pc
is not present - Fixed use of
-g
with MSVC
Other changes:
- Bazel is now supported on linux (#153)
- More work on testing
- Some internal refactoring
Version 0.6.3
Added:
- Added a flag to disable inclusion of
<format>
by cpptrace.hpp and the definition of formatter specializations
Fixes:
- Fixed use after free during cleanup of split dwarf information #141
- Fixed an issue with TCO by clang on arm interfering with unwinding skip counts for internal methods
- Fixed issue with incorrect object addresses being reported on macos when debug maps are used
- Fixed issue with handling of split dwarf emitted by clang under dwarf4 mode
Other changes:
- Added note about signal-safe tracing requiring
_dl_find_object
to documentation and fixed errors in the signal-safe
tracing docs - Added more configurations to unittest ci setup
- Optimized unittest ci matrix setup
- Added options for zstd and libdwarf sources if FetchContent is being used to bring the dependencies in
- Optimized includes in cpptrace.hpp
Version 0.6.2
Fixes:
- Fix an issue with unwinding to collect stack traces during exception creation on arm #134
- Fix issue where
dladdr1
wasn't being used even when detected
Robustness:
- Setup more robust unit tests and added them to CI