linux函数名与地址偏移命令

worktile 其他 246

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux中,可以使用命令`nm`来获取二进制文件(例如可执行文件或动态链接库)中的函数名以及其对应的地址偏移。

    `nm`是GCC工具链的一部分,可以用于显示二进制文件中的符号信息。符号信息包括函数、变量、外部变量等。

    使用`nm`命令的基本语法如下:
    “`
    nm [options]
    “`
    其中,`options`是一些可选参数,用于控制输出的格式和内容。`
    `是要分析的二进制文件的路径。

    常用的`nm`选项包括:
    – `-A`:以十六进制显示地址偏移
    – `-g`:只显示全局符号(即函数和全局变量)
    – `-C`:显示C++的符号信息(通过名称修饰)

    下面是一个实际的例子,以查看一个可执行文件中的函数名和地址偏移:
    “`
    nm -A ./my_executable
    “`
    输出结果类似于:
    “`
    0000000000400490 T _start
    00000000004006e0 t deregister_tm_clones
    0000000000400750 t register_tm_clones
    0000000000400790 t __do_global_dtors_aux

    “`
    其中,第一列是函数的地址偏移,第二列是符号的类型(T代表文本段,即函数),第三列是符号的名称。

    需要注意的是,`nm`命令只能查看已经编译好的二进制文件,不能直接查看正在运行的进程中的函数名和地址偏移。如果需要在运行时获取函数信息,可以使用系统调用或者动态链接库相关的函数。

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

    在Linux中,可以使用以下命令来获取函数名和地址偏移:

    1. nm命令:可以列出二进制文件或共享库中的全部符号表。它可以显示函数、变量和其它符号的名称以及地址。语法如下:

    “`
    nm 文件名
    “`

    例如:

    “`
    nm /usr/bin/ls
    “`

    输出包含函数名、地址和类型等信息。

    2. objdump命令:可以用来查看二进制文件或共享库中的符号表、可执行指令和其他信息。语法如下:

    “`
    objdump -t 文件名
    “`

    例如:

    “`
    objdump -t /usr/bin/ls
    “`

    输出包含函数名、地址偏移和类型等信息。

    3. readelf命令:可以展示目标文件、可执行文件和共享库的结构信息,包括符号表。语法如下:

    “`
    readelf –symbols 文件名
    “`

    例如:

    “`
    readelf –symbols /usr/bin/ls
    “`

    输出包含函数名、地址和类型等信息。

    4. gdb命令:是一个强大的调试工具,可以在调试过程中查看函数名和地址偏移。可以通过在gdb中运行程序并使用`info functions`命令来获取函数列表。语法如下:

    “`
    gdb 文件名
    (gdb) info functions
    “`

    例如:

    “`
    gdb /usr/bin/ls
    (gdb) info functions
    “`

    输出包含函数名、地址和大小等信息。

    5. readelf和addr2line命令的结合:可以将函数地址和地址偏移转换为源代码行号。首先使用readelf命令查找函数的地址,并将其转换为16进制格式,然后使用addr2line命令将16进制地址转换为源代码行号。语法如下:

    “`
    readelf -Ws 文件名 | grep 函数名
    addr2line -e 文件名 函数地址
    “`

    例如:

    “`
    readelf -Ws /usr/bin/ls | grep main
    addr2line -e /usr/bin/ls 0000000000004660
    “`

    输出包含源代码文件名和行号的信息。

    以上是在Linux中获取函数名和地址偏移的一些常用命令,可以根据实际需求选择合适的命令来获取函数信息。

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

    Linux系统中,通过使用一些命令可以获取函数名与地址偏移的信息。下面介绍两个常用的命令:`objdump`和`nm`。

    ## 1. objdump命令

    `objdump`是一个功能强大的反汇编工具,可以用来查看目标文件或可执行文件的详细信息,包括函数名以及对应的地址偏移。

    ### 安装objdump

    使用以下命令安装objdump工具:

    “`bash
    sudo apt-get install binutils
    “`

    ### 使用objdump命令查看函数符号表

    “`bash
    objdump -t <可执行文件路径>
    “`

    该命令将显示可执行文件的符号表,包括函数名、数据地址等信息。可以将输出结果的第三列作为函数的地址偏移。

    ### 使用objdump命令查看函数汇编代码

    “`bash
    objdump -d <可执行文件路径>
    “`

    该命令将显示可执行文件的汇编代码,包括每个函数的首地址、指令等。可以根据函数的首地址来确定地址偏移。

    ## 2. nm命令

    `nm`命令用来列出目标文件中的符号表信息,包括函数名、变量名等。

    ### 安装nm命令

    一般情况下,`nm`命令已经预装在Linux系统中,如果没有安装,请使用以下命令安装:

    “`bash
    sudo apt-get install binutils
    “`

    ### 使用nm命令查看函数符号表

    “`bash
    nm <可执行文件路径>
    “`

    该命令将显示可执行文件的符号表,包括函数名和对应的地址。可以将输出结果的第二列作为函数的地址偏移。

    ## 总结

    使用`objdump`和`nm`命令可以方便地查看可执行文件的函数名和地址偏移。`objdump`提供了更详细的信息,包括汇编代码,而`nm`命令只提供符号表信息。根据具体需求选择合适的命令来查看函数的地址偏移。

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

400-800-1024

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

分享本页
返回顶部