addr2line

arm-eabi-addr2line 

Usage: arm-eabi-addr2line [option(s)] [addr(s)]

for example:

D:\gat\iBox\TRUNK\lib>arm-eabi-addr2line -e "D:\*.out.symbols\alps\out\target\product\*\symbols/../../../../../kernel/vmlinux" c0037aa0

 The options are:
  @<file>                Read options from <file>
  -b --target=<bfdname>  Set the binary file format
  -e --exe=<executable>  Set the input file name (default is a.out)
  -i --inlines           Unwind inlined functions
  -j --section=<name>    Read section-relative offsets instead of addresses
  -s --basenames         Strip directory names
  -f --functions         Show function names
  -C --demangle[=style]  Demangle function names
  -h --help              Display this information
  -v --version           Display the program's version.

常用-f, -C, -e.

 

KE debug的方法:

首先在在dump的kernel log中找[<>]这样的东西,然后再通过addr2line在vmlinux中找到其对应的line

有的地址,比如bf开头的是debug不了的,因为3GB-8MB ~ 3GB是kernel module载入的地址,而vmlinux中没有module的symbol table.

NE debug的方法

首先在ne log中找signal 11 (SIGSEGV), fault addr baae8fd1

的东西,找到后

通过分析,如果fault addr 是deaddead,那就表示heap error出现,然后再看是deadadd0,就是heap corruption,如果是deadadd0,就是heap usage error.

然后将heap信息保存下载

然后再通过将signal 11 (SIGSEGV), fault addr baae8fd1中的地址通过addr2line来进行转换得道C库出错的地址

NE的decode是通过

         #01  pc 0001cd4a  /system/lib/libc.so

中间后面libc.so的路径,将其加到symbols path后面,然后再通过addr2line来解析出来。

 arm-eabi-addr2line -f -C -e D:\gat\Department\SP_SS\OSS5_ST_Share\GAT\TRUNK\Test_Cases\NE\ztemt73v2_ALPS.GB.p52_eng.out.symbols\alps\out\target\product\ztemt73v2\symbols\system\lib\libc.so 0001cd0e

输出的话就是

__findenv
/alps/GB/Of/alps/bionic/libc/stdlib/getenv.c:90

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值