addr2line命令来自英文词组“address to line”的缩写,其功能是将函数地址解析成文件名或行号的工具。给出一个可执行文件中的地址或一个可重定位对象中的偏移部分的地址,使用调试信息来找出与之相关的文件名和行号。

语法格式:addr2line [参数] 文件名

常用参数:

-a 以十六进制形式显示地址
-C 将符号名解码为用户级别的名字
-e 设置需要转换地址的可执行文件名
-f 显示文件名、行号和函数名信息
-F 显示函数名及文件行号
-j 读取指定部分的偏移量,而不是绝对地址
-p 每个地址信息单独占一行

参考示例

查看文件名、行号和函数名相关信息:

[root@linuxcool ~]# addr2line -f -e File.so

查看文件名、行号、函数名及十六进制形式地址信息:

[root@linuxcool ~]# addr2line -a File.so

查找指定的地址所对应的代码位置:

[root@linuxcool ~]# addr2line 0x00000000004005e7 -e test -f -C -s