diff options
| author | vaxerski <vaxry@vaxry.net> | 2023-08-11 17:22:16 +0200 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2023-08-11 17:22:19 +0200 |
| commit | 60b548296d9465c77a3f96f01305df5b83084903 (patch) | |
| tree | cbd98a010b7a63b41c7533ed5009f6f3e70f16e9 /src/helpers/MiscFunctions.cpp | |
| parent | 901236a5356a3f249af7d55e5db69889e50256b8 (diff) | |
internal: move backtrace to specific func
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
| -rw-r--r-- | src/helpers/MiscFunctions.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp index d18c8f47..acda2abd 100644 --- a/src/helpers/MiscFunctions.cpp +++ b/src/helpers/MiscFunctions.cpp @@ -6,6 +6,7 @@ #include <sys/utsname.h> #include <iomanip> #include <sstream> +#include <execinfo.h> #if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) #include <sys/sysctl.h> @@ -696,3 +697,20 @@ std::string replaceInString(std::string subject, const std::string& search, cons } return subject; } + +std::vector<SCallstackFrameInfo> getBacktrace() { + std::vector<SCallstackFrameInfo> callstack; + + void* bt[1024]; + size_t btSize; + char** btSymbols; + + btSize = backtrace(bt, 1024); + btSymbols = backtrace_symbols(bt, btSize); + + for (size_t i = 0; i < btSize; ++i) { + callstack.emplace_back(SCallstackFrameInfo{bt[i], std::string{btSymbols[i]}}); + } + + return callstack; +} |
