C++ summary 工具 nm c++filt

nm

nm 命令是一个用于显示二进制文件(通常是可执行文件或共享库)中的符号表的工具。它通常用于查看程序或库中定义的全局符号和函数的信息。nm 命令对于分析二进制文件中的符号和调试信息非常有用。

基本语法如下:

bash 复制代码
nm [options] <binary-file>

其中 <binary-file> 是要分析的二进制文件的路径。以下是一些常用的 nm 命令选项:

  • -a:显示所有符号,包括局部符号。
  • -g:仅显示全局符号。
  • -p:不排序,以符号在文件中出现的顺序显示。
  • -u:显示未定义的符号。
  • -C:显示 C++ 符号的原型。
  • -r:显示只读数据段的符号。

以下是一些示例:

  1. 显示所有符号(包括局部符号):

    bash 复制代码
    nm -a binary_file
  2. 显示全局符号:

    bash 复制代码
    nm -g binary_file
  3. 显示未定义的符号:

    bash 复制代码
    nm -u binary_file
  4. 显示 C++ 符号的原型:

    bash 复制代码
    nm -C binary_file

请注意,nm 命令的输出可能会很庞大,具体的输出格式和信息取决于二进制文件的类型和编译器的选项。在查看输出时,你可能会看到符号的地址、类型(函数、对象、未定义等)、符号名等信息。

c++filt

c++filt 是一个用于解码 C++ 符号(mangled names)的工具。在 C++ 中,由于函数重载、命名空间等特性,编译器会对函数名进行名称重整,以便区分不同的函数。这个过程被称为名称修饰(mangling)。

c++filt 工具可以将这样的修饰名称还原为人类可读的形式,使得符号更易于理解。

在命令行中使用 c++filt 的基本语法如下:

bash 复制代码
c++filt [mangled_name]

其中,mangled_name 是被修饰过的函数名或符号名称。c++filt 将其解码为可读的形式。

例如:

bash 复制代码
c++filt _Z3fooPc

这个命令可能输出:

复制代码
foo(char*)

这表示 _Z3fooPc 被还原为 foo(char*)

CG

相关推荐
为何创造硅基生物1 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好1 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
星寂樱易李2 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
仰泳之鹅2 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆2 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
于小猿Sup3 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y3 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
社交怪人4 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生5 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588