linux中nm命令查看程序
-
Linux中的nm命令用于查看可执行程序或共享库中的符号表信息。符号表保存了程序中定义和引用的全局变量、函数以及其他符号的名称和地址。
nm命令的基本语法为:
“`
nm [选项] [文件名]
“`常见的选项包括:
– `-A`:以十六进制的形式显示符号的值。
– `-C`:以C++的形式显示符号的名称。
– `-D`:将动态库的符号以及符号的值和类型显示出来。
– `-p`:以可重定位格式显示符号的值。
– `-g`:仅显示全局符号。
– `-U`:仅显示未定义的符号。
– `-r`:按照符号的地址排序。
– `-t`:按照符号的类型排序。使用nm命令查看程序的符号表信息非常简单,只需在命令行中输入“`nm 文件名“`即可。执行命令后,系统会逐行显示文件中的符号信息,包括符号名称、符号类型以及符号的地址。
需要注意的是,一些可执行文件和共享库可能被剥离了符号表信息,这种情况下使用nm命令是无法查看到符号表的。对于这种情况,可以使用objdump命令来查看程序的符号信息。
2年前 -
在Linux中,`nm`命令用于查看可执行文件和库文件中的符号表。它提供了一种查看程序中函数、变量和其他符号的方式,以及这些符号的地址和类型。下面是关于`nm`命令的5个重要点:
1. 基本语法:`nm`命令的基本用法是`nm
`,其中` `是要查看的可执行文件或库文件的路径。可以使用绝对路径或相对路径指定文件。 例如,`nm /usr/bin/ls`会显示`/usr/bin/ls`可执行文件中的符号表。
2. 查看符号类型:`nm`命令可以列出不同类型的符号,包括函数、全局变量、局部变量等。常见的符号类型包括:
– `T`:可执行代码段中的函数。
– `D`:已初始化的全局变量。
– `B`:未初始化的全局变量。
– `U`:未定义的符号,需要在其他库中解析。
– `V`:局部变量。3. 查看地址和大小:`nm`命令还可以显示每个符号的地址和大小。地址是符号在文件中的偏移量,以16进制表示。大小表示符号占用的字节数。
4. 与其他命令结合使用:`nm`命令可以与其他命令结合使用,以进一步分析程序中的符号。例如,可以使用`grep`命令来过滤特定类型的符号,或者使用`sort`命令按照符号的地址进行排序。
例如,`nm /usr/bin/ls | grep ‘ T ‘`会只显示可执行代码段中的函数符号。
5. 调试信息:通过在编译时添加`-g`选项,可以在可执行文件或库文件中包含调试信息。`nm`命令可以将这些调试信息与符号表结合使用,以提供更详细的程序分析能力。在调试时,`nm`命令可以帮助开发人员跟踪程序中的符号和变量。
总结:在Linux中,`nm`命令是一个强大的工具,可用于查看程序中的符号表。它提供了对函数、变量和其他符号的详细信息,包括类型、地址和大小。通过与其他命令结合使用,开发人员可以更好地分析程序并进行调试。
2年前 -
为了查看一个程序中的符号表,我们可以使用Linux中的nm命令。nm命令用于列出一个二进制目标文件中的符号表(Symbol Table)。符号表是一个用于记录变量名、函数名和其他符号名称与其在目标文件中位置的映射关系的表格。
以下是使用nm命令查看程序的方法和操作流程:
1. 打开终端:在Linux系统上,打开终端,然后进入到你想要查看程序的目录。
2. 运行nm命令:输入以下命令来运行nm命令并查看程序的符号表:
“`
nm <程序名>
“`
请将”<程序名>“替换为你想要查看的程序的名称或者路径。例如,如果你想要查看一个名为”program”的程序的符号表,你可以运行以下命令:
“`
nm program
“`3. 查看符号表:执行上述命令后,nm命令会列出程序的符号表。符号表中的每一行都包含了一个符号的相关信息,如符号的地址、类型和名称等。
以下是nm命令支持的一些常用选项:
– -A/–print-file-name: 显示源文件
– -a/–debug-syms:显示所有符号(包括未导出的符号)
– -D/–dynamic:显示动态符号表
– -g/–extern-only:只显示外部符号
– -p/–portability:以POSIX标准格式输出
– -C/–demangle:将C++的符号进行解码例如,若要查看程序的动态符号表,可以使用以下命令:
“`
nm -D program
“`以上就是使用nm命令在Linux中查看程序的符号表的方法和操作流程。通过这个方法,你可以了解程序中定义的全局变量、函数和其他符号的地址和类型,帮助你进行程序的调试和分析。
2年前