10 #include "backward.hpp" 19 int parse_bt_symbol(
char* backtrace_line,
void** addr,
char* symbol,
char* offset) {
22 std::regex btline(
"(\\d+)\\s+([\\w\\.]+)\\s+(0x[\\da-f]+)\\s+(\\w+)\\s+\\+\\s+(\\d+)");
28 std::regex btline(
"([\\w\\.\\/]+)\\((\\w*)\\+(0x[\\da-f]+)\\)\\s+\\[(0x[\\da-f]+)\\]");
34 std::cmatch backtrace_match;
35 if (std::regex_search(backtrace_line, backtrace_match, btline)) {
36 *addr =
reinterpret_cast<void*
>(std::stoul(backtrace_match[ADDR].str(),
nullptr, 16));
37 std::strcpy(symbol, backtrace_match[
SYMBOL].str().c_str());
38 std::strcpy(offset, backtrace_match[OFFSET].str().c_str());
39 backtrace_line[backtrace_match.position(OBJPOS)-1] =
'\0';
46 int cxx_demangle(
char* symbol,
char** funcname,
size_t* funcname_sz) {
49 char*
ret = abi::__cxa_demangle(symbol, *funcname, funcname_sz, &status);
61 backward::StackTrace st; st.load_here(12);
int cxx_demangle(char *symbol, char **funcname, size_t *funcname_sz)
int parse_bt_symbol(char *backtrace_line, void **addr, char *symbol, char *offset)