本文主要是介绍C++ summary 工具 nm c++filt,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
nm
nm
命令是一个用于显示二进制文件(通常是可执行文件或共享库)中的符号表的工具。它通常用于查看程序或库中定义的全局符号和函数的信息。nm
命令对于分析二进制文件中的符号和调试信息非常有用。
基本语法如下:
nm [options] <binary-file>
其中 <binary-file>
是要分析的二进制文件的路径。以下是一些常用的 nm
命令选项:
-a
:显示所有符号,包括局部符号。-g
:仅显示全局符号。-p
:不排序,以符号在文件中出现的顺序显示。-u
:显示未定义的符号。-C
:显示 C++ 符号的原型。-r
:显示只读数据段的符号。
以下是一些示例:
-
显示所有符号(包括局部符号):
nm -a binary_file
-
显示全局符号:
nm -g binary_file
-
显示未定义的符号:
nm -u binary_file
-
显示 C++ 符号的原型:
nm -C binary_file
请注意,nm
命令的输出可能会很庞大,具体的输出格式和信息取决于二进制文件的类型和编译器的选项。在查看输出时,你可能会看到符号的地址、类型(函数、对象、未定义等)、符号名等信息。
c++filt
c++filt
是一个用于解码 C++ 符号(mangled names)的工具。在 C++ 中,由于函数重载、命名空间等特性,编译器会对函数名进行名称重整,以便区分不同的函数。这个过程被称为名称修饰(mangling)。
c++filt
工具可以将这样的修饰名称还原为人类可读的形式,使得符号更易于理解。
在命令行中使用 c++filt
的基本语法如下:
c++filt [mangled_name]
其中,mangled_name
是被修饰过的函数名或符号名称。c++filt
将其解码为可读的形式。
例如:
c++filt _Z3fooPc
这个命令可能输出:
foo(char*)
这表示 _Z3fooPc
被还原为 foo(char*)
。
CG
- 设计良好的计算机程序是否可以避免所有内存泄漏?
- https://www.quora.com/What-technology-or-tools-should-I-learn-along-with-C-for-experienced-programmers
这篇关于C++ summary 工具 nm c++filt的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!