首页
学习
活动
专区
工具
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下的应用。

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

相关·内容

linux 编译汇编,linux下的汇编教程

linux下的汇编教程 第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。...Linux汇编行结构 任何汇编行都是如下结构: [:] [} @ comment [:] [} @ 注释 Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。...Linux 汇编程序中的标号 标号只能由a~z,A~Z,0~9,“.”,_等字符组成。...调试工具 Linux下的GNU调试工具主要是gdb、gdbserver和kgdb。其中gdb和gdbserver可完成对目标板上Linux下应用程序的远程调试。...开发者可以通过上位机的 gdb输入命令,控制目标板上进程的运行,查看内存和寄存器的内容。

3.5K31
  • linux下查看系统信息

    |linux下查看系统信息 linux查看系统信息基础命令: 命令 说明 uname -a 查看内核/操作系统/CPU信息 head -n 1 /etc/issue 查看操作系统版本 cat /proc...free -m 查看内存使用量和交换区使用量 df -h 查看各分区使用情况 du -sh 查看指定目录的大小 grep MemTotal /proc/meminfo 查看内存总量 grep MemFree.../proc/meminfo 查看空闲内存量 uptime 查看系统运行时间、用户数、负载 cat /proc/loadavg 查看系统负载 磁盘和分区 mount | column -t 查看挂接的分区状态...网络 ifconfig 查看所有网络接口的属性 iptables -L 查看防火墙设置 route -n 查看路由表 netstat -lntp 查看所有监听端口 netstat -antp 查看所有已经建立的连接...netstat -s 查看网络统计信息 进程 ps -ef 查看所有进程 top 实时显示进程状态 用户 w 查看活动用户 id 查看指定用户信息 last 查看用户登录日志 cut -d: -f1

    12010

    Linux下查看文件创建时间

    在windows下,一个文件有:创建时间、修改时间、访问时间。而在Linux下,一个文件也有三种时间,分别是:访问时间(Access)、修改时间(Modify)、状态改变时间(Change)。...使用stat命令查看文件的访问时间,修改时间和状态改变时间。 image.png 很不幸,Linux目前常见的文件系统是没有存储文件创建时间的,比如ext3就没有存储。...尽管它们为创建时间使用的字段名称是不一样的,比如: ufs2 → st_birthtime zfs → crtime ext4 → crtime btrfs → otime jfs → di_otime 那么如何查看我们的文件系统呢...可以使用df -T 命令来查看磁盘各个分区使用的文件系统类型。如下图所示: image.png 本人使用的机器的磁盘分区使用的文件系统类型是ext3。也就是说本人是无法查看文件创建时间的。...---- 参考文献 [1]What file systems on Linux store the creation time?

    25.8K40

    Linux下如何查看版本信息

    Linux下如何查看版本信息, 包括位数、版本信息以及CPU内核信息、CPU具体型号等等,整个CPU信息一目了然。   ...1、# uname -a   (Linux查看版本当前操作系统内核信息)   Linux localhost.localdomain 2.4.20-8 #1 Thu Mar 13 17:54:28 EST...2003 i686 athlon i386 GNU/Linux   2、# cat /proc/version (Linux查看当前操作系统版本信息)       Linux version 2.4.20...Hat Linux release 9 (Shrike)   4、# cat /proc/cpuinfo (Linux查看cpu相关信息,包括型号、主频、内核信息等)   processor       ...查看版本说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)   Linux查看版本说明当前CPU运行在32bit模式下   6、# lsb_release -a

    21K20
    领券