首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux下查看汇编nm

在Linux环境下,nm命令用于列出目标文件中的符号。这些符号可以是函数、变量等。nm命令对于调试、逆向工程以及了解程序的内部结构非常有用。

基本用法

代码语言:txt
复制
nm [选项] <目标文件>

常见选项

  • -A--print-file-name:在每个符号前面打印出文件名。
  • -C--demangle:对C++的符号进行解码,使其更易读。
  • -D--dynamic:显示动态符号,而不是静态符号。
  • -l--line-numbers:显示行号信息。
  • -n--numeric-sort:按地址或索引排序,而不是按符号名称。
  • -u--undefined-only:仅显示未定义的符号。
  • -g--extern-only:仅显示外部符号。

示例

  1. 列出一个目标文件的所有符号:
代码语言:txt
复制
nm target_file.o
  1. 列出一个动态库的所有动态符号:
代码语言:txt
复制
nm -D libexample.so
  1. 对C++目标文件的符号进行解码:
代码语言:txt
复制
nm -C target_file.cpp.o

输出解释

nm命令的输出通常包含三列:地址、类型和符号名称。

  • 地址:符号在内存中的位置。
  • 类型:符号的类型,例如T表示文本(代码)段中的符号,D表示数据段中的符号,U表示未定义的符号等。
  • 符号名称:符号的名字。

应用场景

  • 调试:通过查看符号表,可以了解程序中函数和变量的布局。
  • 逆向工程:分析二进制文件的符号表可以帮助理解程序的结构和功能。
  • 链接错误排查:当链接器报告未定义的符号错误时,可以使用nm命令检查目标文件和库文件中的符号。

注意事项

  • nm命令只能显示目标文件或库文件中的符号,不能直接显示可执行文件中的符号。要查看可执行文件中的符号,可以使用objdump命令。
  • 对于C++程序,由于名称修饰(name mangling),符号名称可能难以阅读。使用-C选项可以解码这些名称。

希望这个解释能帮助你更好地理解nm命令及其在Linux下的应用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

14分21秒

21-linux教程-linux中查看当前所在目录和查看当前目录下的内容

4分4秒

106_Linux之cpu查看vmstat

2分54秒

107_Linux之cpu查看pidstat

57秒

109_Linux之硬盘查看df

2分20秒

111_Linux之网络IO查看ifstat

24分42秒

57-linux教程-linux下安装mysql

5分29秒

MongoDB非Linux下安装

5分24秒

17-linux教程-查看用户信息-切换用户

1分49秒

44-linux教程-查看文件或者目录的权限

2分59秒

108_Linux之内存查看free和pidstat

3分37秒

110_Linux之磁盘IO查看iostat和pidstat

7分3秒

56-linux教程-linux下检查是否安装mariadb

领券