linux中nm命令详解

不及物动词 其他 174

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    nm命令是一个Linux系统中的程序,用于查看二进制文件的符号表,默认将显示目标文件中的所有符号。它可以显示函数、变量和其他符号的名称,并根据需要指示它们的类型和地址。

    使用nm命令可以帮助开发者在调试和分析程序时更好地理解程序内部的结构和运行情况。下面对nm命令的一些常用参数和功能进行详解:

    1. 显示符号类型(Symbol Type):nm命令默认只显示符号的名称,通过使用命令参数-t可以显示符号的类型。常见的符号类型包括函数、变量、弱符号和未定义符号等。

    2. 显示符号值(Symbol Value):nm命令默认显示符号的十六进制地址,通过使用命令参数-A可以显示符号的十进制地址。符号值可以帮助开发者确定符号在内存中的位置。

    3. 显示符号大小(Symbol Size):nm命令通过命令参数-S可以显示符号的大小。符号大小表示符号占用的内存空间大小,通常用于优化程序的存储和执行效率。

    4. 过滤符号表(Filter Symbol Table):nm命令可以使用命令参数-g过滤掉目标文件中的全局符号。全局符号是在多个源文件之间共享的符号,过滤掉全局符号可以减少符号表的大小和处理时间。

    5. 显示动态符号表(Dynamic Symbol Table):nm命令可以使用命令参数-D显示动态符号表。动态符号表包含与共享库相关的符号,通过显示动态符号表可以帮助开发者理解程序与共享库之间的链接关系。

    除了上述常用参数和功能,nm命令还有一些其他的选项和用法,如显示未定义符号、按照符号的大小排序、输出结果到文件等。开发者可以根据自己的需求来选择合适的参数和选项来使用nm命令。

    总结:nm命令是一个在Linux系统中非常有用的工具,可以帮助开发者查看程序的符号表信息,理解程序的结构和运行情况。通过使用不同的参数和选项,开发者可以获取所需的符号信息,并根据需要进行进一步的分析和调试。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    nm命令是Linux系统中一个非常有用的工具,它用于查看二进制文件中的符号表信息。它可以显示某个二进制文件中定义的函数、变量以及其他符号的地址、类型和大小等信息。以下是对nm命令的详细解释:

    1. nm命令的基本用法:
    nm命令的基本用法是`nm [options] file`,其中file是要查看的二进制文件的路径。通过使用不同的选项,可以对nm命令进行更详细的配置。

    2. nm命令的选项:
    – -A或–with-symbol-versions:显示符号版本信息。
    – -C或–demangle:显示C++函数名的可读形式。
    – -D或–dynamic:显示动态符号表信息。
    – -S或–print-size:显示符号的大小。
    – -u或–undefined-only:仅显示未解析的符号。

    3. 查看二进制文件中的符号信息:
    使用`nm file`命令可以打印出二进制文件中的所有符号信息,包括函数、全局变量、局部变量等。每个符号都包括一个地址、类型和名称。符号类型包括T(text)、U(undefined)、B(bss)、D(data)等。

    4. 查看二进制文件中的函数信息:
    使用`nm -C file`命令可以打印出二进制文件中的所有函数信息,包括函数的地址、名称和大小。通过配合`–demangle`选项,可以将C++函数名转换为可读形式。

    5. 查看二进制文件中的变量信息:
    使用`nm -D file`命令可以打印出二进制文件中的所有全局变量信息,包括变量的地址、类型和名称。通过配合`–print-size`选项,可以显示变量的大小信息。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    一、概述

    nm命令是一个可以显示目标文件中的符号信息的命令。它可以显示目标文件中的函数、变量以及其他符号的地址、大小等信息。nm命令在Linux系统中非常常用,特别是在调试和分析程序时。

    二、语法格式

    nm命令的语法格式如下:

    “`bash
    nm [options] filename
    “`

    其中,options是nm命令的参数选项,而filename是需要查看符号信息的目标文件或者可执行文件。

    三、常用参数选项

    下面介绍一些常用的nm命令的参数选项:

    1. -A或–debug-syms:显示调试符号。这些符号通常在调试时使用。

    2. -a或–debug-all:显示所有调试信息,包括调试符号和调试段。

    3. -B或–print-file-name:在每个文件名前面打印文件名。

    4. -C或–demangle:将符号名还原为原始C++形式。

    5. -D或–dynamic:显示动态符号表。这些符号通常在动态库中使用。

    6. -f format或–format=format:指定输出格式。常用的格式有bsd、sysv、posix和vms等。

    7. -p或–no-sort:不对符号进行排序。

    8. -r或–reverse-sort:按照相反的顺序排序。

    9. -v或–version:显示nm命令的版本信息。

    四、使用示例

    下面列举一些使用nm命令的示例:

    示例1:显示目标文件的符号信息

    “`bash
    nm file.o
    “`

    该命令将显示file.o文件中的所有符号信息,包括函数、变量等。

    示例2:按地址排序显示目标文件的符号信息

    “`bash
    nm -n file.o
    “`

    该命令将按地址排序显示file.o文件中的所有符号信息。

    示例3:以十六进制形式显示目标文件的符号信息

    “`bash
    nm -x file.o
    “`

    该命令将以十六进制形式显示file.o文件中的所有符号信息。

    示例4:显示动态库的符号信息

    “`bash
    nm -D lib.so
    “`

    该命令将显示lib.so动态库中的所有符号信息。

    五、其他相关命令

    除了nm命令外,还有一些相关的命令也可以用于查看目标文件的符号信息。这些命令包括:

    1. objdump命令:可以以更多的信息方式来显示目标文件的符号信息。它可以显示函数的汇编代码,以及所有的符号、段等信息。

    2. readelf命令:可以以更详细的方式来显示目标文件的符号信息。它可以显示目标文件的符号表、动态符号表、符号版本等信息。

    以上就是关于Linux中nm命令的详细介绍。nm命令在调试和分析程序时非常有用,可以帮助开发人员快速定位问题和优化代码。希望本文对你有所帮助!

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部