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);