#pragma once #include #include #include #include #include #include #include #define BT_BUF_SIZE 100 using namespace std; namespace TraceUtils { struct StackTraceElement { public: StackTraceElement(int elementIndex, void *offset,string file,string symbol); int elementIndex; void *offset; string file; string symbol; string getFunctionName(); string getSourceFile(); int getSourceLine(); private: int symbolLoadState = 0; string fnName; string srcFile; int srcLine; void loadSymbols(); }; struct StackTrace { public: explicit StackTrace(int size); ~StackTrace(); const StackTraceElement** elements; const int stackSize; void printStackTrace(); void printStackTrace(std::function format); }; extern StackTrace backTrace(int size); };