有一个Linux命令是nm
-
nm命令是在Linux系统中常用的一个命令,用于查看目标文件(例如可执行文件、静态库、共享库等)中的符号表。
符号表包含了目标文件中定义的所有全局变量、函数以及其他符号的信息。通过使用nm命令,我们可以查看这些符号的名称、类型,甚至可以查看它们的地址。这对于调试和分析目标文件非常有用。
nm命令的基本用法如下:
“`
nm [OPTION]… [FILE]…
“`其中,OPTION是一些可选参数,用于控制显示方式。常用的选项包括:
– -a或–debug-syms:显示所有符号,包括调试符号;
– -C或–demangle:对C++符号进行反汇编,使其可读性更好;
– -l或–line-numbers:显示每个符号的行号信息;
– -p或–portability:产生可移植的输出;
– -u或–undefined-only:只显示未定义的符号;
– -t或–no-sort或–no-sorting:不对符号进行排序;
– -v或–version-info:显示版本信息。FILE是要查看的目标文件的路径和名称。可以同时指定多个目标文件,以便一次性查看它们的符号表。
除了基本用法之外,nm命令还支持其他一些高级用法,例如使用通配符匹配多个文件、输出结果到文件、过滤特定类型的符号等等。
总的来说,nm命令是一个非常有用的工具,可以帮助开发人员对目标文件进行分析和调试。无论是在开发过程中还是在故障排查中,都可以利用nm命令来查看目标文件中的符号信息。
2年前 -
“nm”是一个常用的Linux命令,它用于查看目标文件中的符号信息。下面是关于“nm”命令的五个要点:
1. 查看符号表:使用“nm”命令可以列出目标文件中的符号表,同时显示每个符号的地址和类型。符号表是一个记录了程序中所有全局变量、函数和常量地址的表格,通过查看符号表,我们可以了解到程序中使用的各种符号的内存地址和在源代码中的定义。
2. 符号类型:在“nm”命令输出中,每个符号都会被分配给不同的类型。常见的符号类型有函数(“T”),数据(“D”),BSS段(“B”)和全局(“G”)等等。这些符号类型可以帮助我们区分出程序中不同类型的符号,从而更好地了解程序的结构和功能。
3. 特定符号过滤:可以通过使用“nm”命令的不同选项过滤输出,以便只显示满足特定条件的符号。例如,可以使用“nm -u”命令只显示未定义符号,使用“nm -r”命令显示仅读数据段中的符号。这些过滤选项使得我们能够更快地找到我们所关注的符号。
4. 动态符号表:除了静态目标文件,如可执行文件和静态库外,“nm”命令也可以查看动态目标文件的符号信息。使用“nm -D”命令可以查看共享库(动态链接库)中的符号表。这对于调试和了解动态库中的符号和链接情况非常有用。
5. 可执行文件分析:使用“nm”命令可以对可执行文件进行分析,特别是在排查链接和内存问题时非常有用。通过查看可执行文件的符号表,我们可以了解到程序中使用的库函数的地址和版本,以及各个模块之间的链接关系。
总结起来,“nm”命令是一个非常有用的工具,它可以帮助我们查看目标文件中的符号信息,了解程序的结构和功能。通过过滤特定条件的符号,我们可以更快地找到我们感兴趣的符号。此外,通过使用“nm”命令还可以对可执行文件和动态库进行深入分析和调试。
2年前 -
nm命令是用于查看编译后的目标文件(可执行文件或者动态库文件)中的符号表的工具。符号表是一个存储了函数、变量和其他符号地址信息的数据结构,用于链接和加载程序时进行符号解析。
nm命令可以用于以下操作:
1. 查看符号表:
可以使用nm命令来查看目标文件中的符号表。默认情况下,nm列出了目标文件中的所有符号,包括函数名、变量名等。“`shell
nm target_file
“`此命令将会输出目标文件中的所有符号以及它们的地址。
2. 过滤符号表:
有时候,目标文件中的符号表会很大,其中包含了很多不相关的符号。在这种情况下,可以使用nm命令的一些选项来过滤符号表,只显示特定类型的符号。– -g:只显示全局符号。
– -u:只显示未定义符号。
– -D:只显示动态符号。
– -C:以C++的格式显示符号名(如果是C++代码)。
– -l:只显示局部符号。可以根据需要选择合适的选项来查看特定类型的符号。
“`shell
nm -g target_file
“`上述命令将只显示目标文件中的全局符号。
3. 查看符号的类型:
nm命令可以根据符号的类型对其进行分类,并用不同的标记来标识不同的类型。常见的符号类型包括:– T:符号是一个代码(函数)符号。
– D:符号是一个已初始化的静态数据对象(全局变量)。
– B:符号是一个未初始化的静态数据对象。
– U:符号是一个未定义的符号。“`shell
nm -t d target_file
“`上述命令将只显示目标文件中的已初始化静态数据对象符号。
4. 查看符号的地址:
nm命令可以显示符号在目标文件中的地址。“`shell
nm -n target_file
“`上述命令将显示目标文件中的所有符号以及它们的地址,地址以十六进制表示。
nm命令还可以用其他选项来控制输出格式,以满足特定需求。
以上是关于nm命令的一些基本操作,这些操作可以帮助开发人员在调试和优化代码的过程中快速定位问题。
2年前