summaryrefslogtreecommitdiff
path: root/src/helpers/MiscFunctions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
-rw-r--r--src/helpers/MiscFunctions.cpp18
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;
+}