嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例
嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例
以下是在 ARM Linux 平台上使用 addr2line 的实际案例,涵盖常见调试场景:
1. 分析程序崩溃地址
场景:
ARM 设备上程序崩溃,日志显示:
Segmentation fault
[ 123.456] [<80123456>] (my_function+0x1c/0x28)
步骤:
-
提取地址:
80123456
-
计算偏移(如果地址是绝对地址):
# 查看程序加载基地址 cat /proc/$(pidof myapp)/maps | head -1 # 输出:80000000-80010000 r-xp 00000000 00:0a 1234 /usr/bin/myapp# 计算相对偏移 echo "ibase=16; 80123456 - 80000000" | bc # 输出:123456 (十六进制 0x123456)
-
使用 addr2line:
# 在