Skip to content

Releases: jeremy-rifkin/cpptrace

Version 0.8.1

21 Feb 05:17
1940dc6
Compare
Choose a tag to compare

Fixed:

  • Fixed compile error on msvc #215

Added:

  • Added cpptrace::can_get_safe_object_frame()

Breaking changes:

  • Renamed ctrace's can_signal_safe_unwind to ctrace_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

20 Feb 05:32
34ea957
Compare
Choose a tag to compare

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 conditionally constexpr where possible

Fixed:

  • Fixed handling of SymInitialize when other code has already called SymInitialize. 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 and Result
  • 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

05 Jan 05:46
6689d14
Compare
Choose a tag to compare

Fixed:

  • Fixed missing <typeinfo> include #202
  • Added __cdecl to a terminate handler to appease MSVC under some configurations #197
  • Set C++ standard for cmake support checks #200
  • Changed hyphens to underscores for cmake component names due to cpack issue #203

Version 0.7.4

21 Dec 22:15
5b3f2fb
Compare
Choose a tag to compare

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

15 Nov 23:43
4354eb2
Compare
Choose a tag to compare

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 a DW_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

06 Oct 21:18
e89eb61
Compare
Choose a tag to compare

Changes:

  • Better support for older CMake with using FetchContent_Declare from a URL #176
  • Better portability for page size detection #177
  • Improved compile times #172
  • Split up cpptrace.hpp into finer-grained headers for lower compile time impact
  • Some minor readme restructuring

Version 0.7.1

13 Sep 13:21
06eb15b
Compare
Choose a tag to compare

Added

  • Better support for finding libunwind on macos #162
  • Support for libbacktrace under mingw #166

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

21 Aug 17:12
0742b42
Compare
Choose a tag to compare

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 on safe_object_frames 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

14 Jul 04:17
90de25f
Compare
Choose a tag to compare

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

20 Jun 01:42
ea56677
Compare
Choose a tag to compare

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