linux函数名与地址偏移命令
-
在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年前 -
在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年前 -
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年前