1、介绍

C++的name mangling遵循一定的规则,因此是可逆的,即通过符号还原出原来的函数定义。c++filt就是这样的一个工具。

2、例子

直接上例子。我们写一个C++程序:

#include <stdio.h>class A
{
public:int a_func(int a, int b){return a+b;}int a_func(int a){return a;}
};int main()
{int aaa = 20;printf("aaa is :%d\n", aaa);A bbb;int ccc = bbb.a_func(30, 40);printf("ccc is : %d\n", ccc);int ddd = bbb.a_func(100);printf("ddd is : %d\n", ddd);
}

以上可以看到我们写了重载的两个函数a_func,只是参数不一样。用命令编译下:

$ gcc main.cpp -o main

用nm命令可以看一下这两个函数导出的符号是怎样的:

$ nm main | grep a_func
0000000000400650 W _ZN1A6a_funcEi
0000000000400638 W _ZN1A6a_funcEii

这两个函数名看着没那么舒服,可以用c++filt试一下:

$ nm main | grep a_func | c++filt 
0000000000400650 W A::a_func(int)
0000000000400638 W A::a_func(int, int)

也可以直接用:

$ c++filt _ZN1A6a_funcEi
A::a_func(int)
$ c++filt _ZN1A6a_funcEii
A::a_func(int, int)

这说明,C++的name mangling遵循一定的规则,因此是可逆的,即通过符号还原出原来的函数定义。c++filt就是这样的一个工具。

这样,当我们调试中遇到某些符号的时候,可以使用c++filt将其还原出原来函数的样子。

GCC详解-Binutils工具之c++filt相关推荐

  1. GCC详解-Binutils工具之strip

    1.介绍 strip经常用来去除目标文件中的一些符号表.调试符号表信息,以减小静态库.动态库和程序的大小.其基本用法: strip xxx 或者 strip xxx -o yyy 2.优缺点 优点:s ...

  2. Gcc详解以及静态库、动态库生成

    [转] Gcc详解以及静态库.动态库生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1.gcc包含的c/c++编译 ...

  3. 彩虹表原理详解及工具介绍

    PS:这玩意偶前几天用了一下,确实强悍无比,在这个表面前,md5等公开的加密算法不堪一击啊.记得我之前的公司开发的游戏账号都用修改过的特有MD5加密算法,建议开发人员都这样搞,这样安全性就大大提高.如 ...

  4. FFmpeg 快速上手:命令行详解、工具、教程、电子书

    FFmpeg 简介 FFmpeg 是一个开源的音视频处理工具,诞生已22年.它可以用来处理音视频的编解码.格式转换.剪辑.合并.抽取.压缩.解压缩.滤镜.字幕等等.它可以在 Windows.Linux ...

  5. cricheditview实现语法高亮和行号_Markdown语法详解及工具介绍

    一.快捷键 加粗 Ctrl + B斜体 Ctrl + I引用 Ctrl + Q插入链接 Ctrl + L插入代码 Ctrl + K插入图片 Ctrl + G提升标题 Ctrl + H有序列表 Ctrl ...

  6. 【Oracle】详解ADDM工具

    一.ADDM简介           在Oracle9i及之前,DBA们已经拥有了很多很好用的性能分析工具,比如,tkprof.sql_trace.statspack.set event 10046& ...

  7. Selenium详解—— 自动化测试工具

    前言 Selenium是一个用于Web应用程序测试的工具.是一个开源的Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Seleni ...

  8. 服务器自带ddos工具,详解DDoS工具 一款流行DDoS木马工具

    图 6 系统网络接口和MAC地址 对gethostbyname下断可发现受控机会首先获取*.softcoo.com这个域名获取主机地址信息,如图7所示. 图7 通过固定域名获取主机地址信息 对conn ...

  9. GCC详解的-Wl选项说明

    在GCC编译程序时,由于GCC命令不经能够编译,也能够链接程序,GCC链接程序是通过ld命令实现的,如何将GCC的命令行参数传递给ld命令呢,这就是通过-Wl,来实现的. 格式如下: gcc -Wl, ...

  10. GCC详解的-Wl选项说明与测试

    在GCC编译程序时,由于GCC命令不仅能够编译,也能够链接程序,GCC链接程序是通过ld命令实现.那如何将GCC的命令行参数传递给ld命令呢.通常在编译时通过使用-Wl这个选项来实现的. 测试例程 测 ...

最新文章

  1. C++中重载(overload)和重写(override)和隐藏
  2. css实现div内一段文本的两端对齐
  3. 前端手动封装数组的foreach,map,filter,every,some,Reduce,reduceRight方法
  4. 百度Ueditor编辑器wordimage踩坑
  5. YOLO升级版:YOLOv2和YOLO9000解析
  6. 手机谷歌浏览器设置不阻止弹窗弹出
  7. jwplayer html插件,Typecho视频播放器插件JWPlayer
  8. #今日论文推荐# XAI+网络安全?布兰登大学等最新《可解释人工智能在网络安全应用》综述,33页pdf阐述其现状、挑战、开放问题和未来方向
  9. 【学数据结构】-----串(顺序串、堆串、块链串)(7000字总结+代码+图)
  10. 诺奖经济大师,数学天才赌徒,和“神秘的股市财富公式”
  11. 微信浏览器打开APP
  12. Day25 - Event Capture, Propagation, Bubbling and Once
  13. 论如何把自己变成卡通人物(OpenCV制作卡通化头像)
  14. Java8新特性 Stream流常用方法
  15. 如何在Ubuntu上安装并使用Docker
  16. 工业机器人入门z50的含义_ABB工业机器人期中考试试题(中职)
  17. 达达-高性能服务端优化之路
  18. QT-----无人机地面站如何修改显示界面1——OpenPilotGCS_config.xml
  19. hrbust 哈理工oj 1989 营救小组【BFS】
  20. 【超详细】7z的详解和7z的控制台参数说明

热门文章

  1. 9020cdn更换墨粉_感动常在!佳能ts9020打印机更换墨盒经验
  2. python绘制散点图和折线图_Python散点图与折线图绘制过程解析
  3. word里画的流程图怎么全选_流程图怎么做?用Word制作流程图超方便!
  4. Matlab导入外部数据绘制函数曲线
  5. fid-helper-pytorch 简单易用的 FID 计算工具
  6. 从零点一开始机器学习之TF1.0版本HDF5转换为saved_model
  7. Android中的像素密度,屏幕密度,屏幕大小,分辨率,ldpi,mdpi,xhdpi,xxhdpi
  8. Photoshop - 新建纯色图层
  9. 计算机隐藏功能表格行,Excel如何一键隐藏、显示某些行(excel表格)
  10. matlab生成的fig文件名字修改