利用反汇编帮助查找段错误

来源:互联网 发布:淘宝店铺可以注销吗 编辑:程序博客网 时间:2024/05/17 07:13

当程序运行时经常会发生段错误,如果在linux系统,可以利用core dump文件,用gdb来帮助查找,前面已经有介绍过这种方法,如果不是linux系统,则很多时候不能使用gdb,则可以利用反汇编来查找出错的位置,一般段错误会打印出出错的指针位置,如下:
Oops: Data Abort caused by READ instruction!
Fault: Alignment fault
pc: 0021034c
r0: 20000053 r1: 00000001 r2: 00000000 r3: 20000053
r4: aaaaaaaa r5: 00256984 r6: aaaaaaaa r7: dddddddd
r8: aaaaaaaa r9: dddddddd r10: 00060000
fp: 00000000 ip: 00000000 sp: 00240bc0
SPSR: 600000d3

从上面看出,pc就是程序计数器,即程序运行到此位置发生错误,然后我们利用objdump将运行的程序反汇编,命令如下:/usr/local/linaro-armv8l-eabi-2017.08-gcc7.1/bin/arm-eabi-objdump -D -S app_demo.elf > a.s
,然后在a.s文件中搜索该pc地址,就可以找到是哪个函数出现问题,可以利用加log等方法来调试。

原创粉丝点击