demangle函数实现
来源:互联网 发布:苹果手机短信备份软件 编辑:程序博客网 时间:2024/06/08 13:11
#include <cxxabi.h>#include <cstdio>void Exception::fillStackTrace(){ const int len = 200; void* buffer[len]; int nptrs = ::backtrace(buffer, len); char** strings = ::backtrace_symbols(buffer, nptrs); if (strings) { for (int i = 0; i < nptrs; ++i) { // TODO demangle funcion name with abi::__cxa_demangle stack_.append(demangle(strings[i])); stack_.push_back('\n'); } free(strings); }}string Exception::demangle(const char *symbol){ size_t size = 0; int status = 0; char temp[128] = {0}; char *demangled = NULL; //first, try to demangle a c++ name if (sscanf(symbol, "%*[^(]%*[^_]%127[^)+]", temp) == 1) { if ((demangled = abi::__cxa_demangle(temp, NULL, &size, &status)) != NULL) { string result(demangled); free(demangled); return result; } } //if that didn't work, try to get a regular c symbol if (sscanf(symbol, "%127s", temp) == 1) { return temp; } //if all else fails, just return the symbol return symbol;}
用g++编译时候加上-rdynamic选项,加入函数符号表才能正确显示
0 0
- demangle函数实现
- 写了个 C++ 名字的 demangle 函数
- 如何识别C++编译以后的函数名(demangle)
- 如何识别C++编译以后的函数名(demangle)
- 借助backtrace和demangle实现异常类Exception
- 借助backtrace和demangle实现异常类Exception
- C++类名demangle
- strtok函数及函数实现
- strtok函数及函数实现
- my_strchr 函数实现 C函数
- 编写函数实现str函数
- 字符串函数_atoi()函数实现
- cat函数系统函数实现
- 激活函数实现--2 Sigmoid函数实现
- 激活函数实现--3 Tanh函数实现
- 实现WSAStartup函数建立
- arp_rcv函数实现分析
- 可变参数函数实现
- Activity的生命周期和四种开启模式之我见
- BZOJ 4563: [Haoi2016]放棋子
- FAILED: InvalidConfigurationException hive.server2.authentication can't be none in non-testing mode
- CodeForces #589 J Cleaner Robot 搜索
- hdu 1151 Air Raid【最小路径覆盖】
- demangle函数实现
- 简单文章发布系统(1)
- Java注解-自定义注解
- ExtJS创建DataGrid
- HTML知识复习(1)
- Java基于jxl与模板导出excel并弹出下载
- Maven类包冲突终极解决小技若干
- 0-1背包
- 合并排序