From 60fc1135f52277844a79f7f243aaf7cd874d4d4a Mon Sep 17 00:00:00 2001 From: Paul Bunn Date: Wed, 2 Oct 2024 15:53:27 -0700 Subject: [PATCH] Adding new load_saved function to allow loading a previously obtained stacktrace to be printed --- backward.hpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/backward.hpp b/backward.hpp index 670aa45..5b1cf16 100644 --- a/backward.hpp +++ b/backward.hpp @@ -740,6 +740,9 @@ class StackTraceImplBase { void skip_n_firsts(size_t n) { _skip = n; } protected: + void load_saved(void** arr, size_t sz, std::vector& v) { + copy(&arr[0], &arr[sz], back_inserter(v)); + } void load_thread_info() { #ifdef BACKWARD_SYSTEM_LINUX #ifndef __ANDROID__ @@ -881,6 +884,9 @@ class StackTraceImpl : public StackTraceImplHolder { skip_n_firsts(0); return size(); } + void load_saved(void** arr, size_t sz) { + StackTraceImplBase::load_saved(arr, sz, _stacktrace); + } size_t load_from(void *addr, size_t depth = 32, void *context = nullptr, void *error_addr = nullptr) { load_here(depth + 8, context, error_addr); @@ -1065,6 +1071,10 @@ class StackTraceImpl : public StackTraceImplHolder { return size(); } + void load_saved(void** arr, size_t sz) { + StackTraceImplBase::load_saved(arr, sz, _stacktrace); + } + size_t load_from(void *addr, size_t depth = 32, void *context = nullptr, void *error_addr = nullptr) { load_here(depth + 8, context, error_addr); @@ -1103,6 +1113,10 @@ class StackTraceImpl : public StackTraceImplHolder { return size(); } + void load_saved(void** arr, size_t sz) { + StackTraceImplBase::load_saved(arr, sz, _stacktrace); + } + size_t load_from(void *addr, size_t depth = 32, void *context = nullptr, void *error_addr = nullptr) { load_here(depth + 8, context, error_addr); @@ -1197,6 +1211,10 @@ class StackTraceImpl : public StackTraceImplHolder { return size(); } + void load_saved(void** arr, size_t sz) { + StackTraceImplBase::load_saved(arr, sz, _stacktrace); + } + size_t load_from(void *addr, size_t depth = 32, void *context = nullptr, void *error_addr = nullptr) { load_here(depth + 8, context, error_addr);