addr2line命令来自于英文词组”address to line“的缩写,其功能是将函数地址解析成文件名或行号的工具。给出一个可执行文件中的地址或一个可重定位对象中的偏移部分的地址,使用调试信息来找出与之相关的文件名和行号。
语法格式:addr2line [参数] [地址]
常用参数:
-a | 在函数名、文件和行号信息之前,显示地址,以十六进制形式 |
-b | 指定目标文件的格式为bfdname |
-e | 指定需要转换地址的可执行文件名 |
-j | 给出的地址代表指定section偏移,而非绝对地址 |
-C | 将低级别的符号名解码为用户级别的名字 |
-f | 在显示文件名、行号的同时显示函数名信息 |
-p | 每一个地址的信息占一行 |
参考实例
查看文件名、行号和函数名相关信息:
[root@linuxcool ~]# addr2line -f -e libvitae.so
查看文件名、行号、函数名及十六进制形式地址信息:
[root@linuxcool ~]# addr2line -a libvitae.so
查找指定的地址所对应的代码位置:
[root@linuxcool ~]# addr2line 0x00000000004005e7 -e test -f -C -s