linux中的nm命令

fiy 其他 159

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    nm命令是Linux系统中的一个工具,用于查看目标文件或者共享库中的符号表信息。符号表记录了目标文件或者共享库中所定义、引用的函数、变量等符号的信息。nm命令可以帮助开发者了解目标文件或者共享库的符号信息,是一个非常有用的工具。

    使用nm命令可以查看目标文件或者共享库中的符号表。常用的命令选项有以下几种:
    – -a或者–debug-syms选项:显示所有符号表信息,包括调试符号表;
    – -u或者–undefined-only选项:只显示未定义(引用)的符号;
    – -A或者–with-full-symbol-addr选项:显示符号表中的地址;
    – -C或者–demangle选项:对C++符号进行解密;
    – -I或者–dynamic选项:只显示动态符号表;

    nm命令的使用格式如下:
    “`
    nm [选项] <目标文件>
    “`
    其中,目标文件可以是二进制可执行文件、目标文件(.o文件)或者库文件(.a或者.so文件)。nm命令会默认按照十六进制的地址排序并显示符号表信息。

    举个例子,我们可以使用nm命令查看一个目标文件的符号表信息:
    “`
    nm -a target.o
    “`
    nm命令将会输出目标文件中的所有符号信息,包括符号的地址、类型(函数、变量等)以及符号的名字。通过观察符号表信息,我们可以了解目标文件中定义和引用的所有符号,有助于开发和调试工作。

    总之,nm命令是Linux系统中非常有用的一个工具,可以帮助开发者查看目标文件或者共享库中的符号表信息,从而更好地了解代码结构和进行调试工作。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    1. nm是一种在Linux系统中使用的命令行工具,用于查看二进制文件中的符号表信息。符号表记录了程序中定义的全局变量、函数和外部变量等信息。

    2. 使用nm命令可以查看一个二进制文件中的所有符号(包括函数和变量)以及它们的地址、类型和大小等信息。这对于调试和分析二进制文件非常有用。

    3. nm命令常用于开发人员调试和优化代码,特别是在程序崩溃或发生错误时。通过检查二进制文件的符号表,开发人员可以确定问题出现的位置,并更好地理解程序的结构和行为。

    4. nm命令的语法为:nm [选项] [文件名],其中选项可以用于指定显示的符号类型以及其他附加信息。常用的选项包括”-a”(显示所有符号)、”-u”(显示未定义的符号)和”-C”(使用符号的原始名称而不是其修饰版本)等。

    5. nm命令还可以用于链接器(如ld)的输入文件中查找库函数的定义。这对于解决链接错误和依赖关系非常有帮助。通过使用nm命令,可以确定哪些库函数被程序中的某个符号引用,从而找到所需的库文件。

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

    NM(Name List)命令是Linux系统中的一个用于查看和分析目标文件中符号表的工具。符号表中存储着目标文件中的所有全局变量、函数和外部符号等信息。通过使用NM命令,可以快速浏览目标文件的符号信息,从而进行代码分析和调试。

    NM命令的使用方法及操作流程如下:

    1. 基本语法:

    “`shell
    nm [选项] 目标文件
    “`

    2. 常用选项:

    – `-A`:将符号表中的符号以十六进制的形式显示出来。
    – `-a`:将目标文件中的所有符号(包括本地符号和全局符号)都显示出来,默认情况下只显示全局符号。
    – `-l`:将对象文件的名称解析成源文件和行号的形式进行显示。
    – `-C`:将C++的符号进行进行还原,方便阅读。
    – `-S`:显示与目标文件中的符号相关的源代码。
    – `-u`:只显示未定义的符号。
    – `-t`:以符号数值从低到高的顺序对符号进行排序。
    – `-r`:反向排序,以符号数值从高到低的顺序对符号进行排序。

    3. 示例:

    – 查看目标文件的全局符号表:

    “`shell
    nm target.o
    “`

    – 查看目标文件的所有符号表(包括本地符号和全局符号):

    “`shell
    nm -a target.o
    “`

    – 显示符号表中的符号定义的行号:

    “`shell
    nm -l target.o
    “`

    – 显示未定义的符号:

    “`shell
    nm -u target.o
    “`

    4. 结果解读:

    在使用NM命令后,将会输出目标文件中的符号表信息。符号表包含了目标文件中的各种符号类型,常见的符号类型有以下几种:

    – `T`:代码段中的符号(函数)。
    – `D`:数据段中的符号(全局变量)。
    – `B`:BSS段中的符号(未初始化的全局变量)。
    – `U`:未定义的符号,需要在链接阶段解析。
    – `W`:弱符号,可以被其他强符号重定义。
    – `V`:用于描述目标文件的版本信息。
    – `s`:本地符号,只在目标文件内部可见。

    符号表中的每一行包含了符号的地址、符号类型以及符号的名称等信息。

    通过使用NM命令,可以方便地查看目标文件中的符号信息,有助于进行代码调试和分析。

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

400-800-1024

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

分享本页
返回顶部