addr2line命令将地址翻译成文件名和行号。 给出一个可执行文件中的地址或一个可重定位对象中的偏移部分的地址,它使用调试信息来找出与之相关的文件名和行号。
**语法格式:** addr2line [参数] [地址]
**常用参数:**
| -a | 在函数名、文件和行号信息之前,显示地址,以十六进制形式 |
| ---- | -------------------------------------------------------- |
| -b | 指定目标文件的格式为bfdname |
| -e | 指定需要转换地址的可执行文件名 |
| -j | 给出的地址代表指定section的偏移,而非绝对地址 |
| -C | 将低级别的符号名解码为用户级别的名字 |
| -f | 在显示文件名、行号输出信息的同时显示函数名信息 |
| -p | 使得该函数的输出信息更加人性化:每一个地址的信息占一行 |
**参考实例**
使用-f和-e参数,在显示文件名、行号输出信息的同时显示函数名信息:
```
[root@anycode ~]# addr2line -f -e android/obj/local/armeabi/libvitae.so
```
使用-a参数,在函数名、文件和行号信息之前,显示地址,以十六进制形式:
```
[root@anycode ~]# addr2line -a linuxcool
```
使用addr2line的一些参数来定位代码:
```
[root@anycode ~]# addr2line 0x00000000004005e7 -e test -f -C -s
```