根据地址由maps推算代码位置

adb shell cat /proc/pid/maps |gawk '$2~/r-xp/{print  "0x"substr($1,1,8),"0x"substr($1,10,8), $6}'

将之保存到maps.txt文件

cat maps.txt |awk '{addr=strtonum(addr2);beg=strtonum($1);end=strtonum($2);if(addr>=beg&&addr<=end){printf "0x%0x %s\n",addr-beg,$3}}' addr2="0x"$1|awk '{system("arm-eabi-addr2l
ine -f -e out/target/product/ua8200/symbols"$2" "$1)}'

将以上脚本保存到test.sh


若得到stack back trace 如下:

E/libc    ( 1537): *** FREE CHECK: buffer 0x684d30 corrupted 16 bytes before allocation
E/libc    ( 1537): call stack:
E/libc    ( 1537):  0: 8000dbd2
E/libc    ( 1537):  1: 8000dc80
E/libc    ( 1537):  2: 8000dcc4
E/libc    ( 1537):  3: 8000dd20
E/libc    ( 1537):  4: afd144ec
E/libc    ( 1537):  5: afc009c6
E/libc    ( 1537):  6: a8114a56
E/libc    ( 1537):  7: ac51de58
E/libc    ( 1537):  8: ac51df74
E/libc    ( 1537):  9: ac51d168
E/libc    ( 1537): 10: ac51d184
E/libc    ( 1537): 11: ac524fea
E/libc    ( 1537): 12: ac526160
E/libc    ( 1537): 13: a811c662
E/libc    ( 1537): 14: a811cbc0
E/libc    ( 1537): 15: afd118f8
E/libc    ( 1537): 16: afd114c4


将其中的stack部分保存为backtrace.txt

运行awk '{system("test.sh "$5)}' back trace.txt 

可得

get_backtrace
/home/sw/xgm/msm7x30/gingerbread/bionic/libc/bionic/malloc_debug_leak.c:258
assert_log_message
/home/sw/xgm/msm7x30/gingerbread/bionic/libc/bionic/malloc_debug_leak.c:308
chk_mem_check
/home/sw/xgm/msm7x30/gingerbread/bionic/libc/bionic/malloc_debug_leak.c:344
chk_free
/home/sw/xgm/msm7x30/gingerbread/bionic/libc/bionic/malloc_debug_leak.c:392
free
/home/sw/xgm/msm7x30/gingerbread/bionic/libc/bionic/malloc_debug_common.c:225
_ZdlPv
/home/sw/xgm/msm7x30/gingerbread/bionic/libstdc++/src/new.cpp:27
~RefBase
/home/sw/xgm/msm7x30/gingerbread/frameworks/base/libs/utils/RefBase.cpp:534
_ZN7android6Thread11_threadLoopEPv
/home/sw/xgm/msm7x30/gingerbread/frameworks/base/libs/utils/Threads.cpp:773
_ZN13thread_data_t10trampolineEPKS_
/home/sw/xgm/msm7x30/gingerbread/frameworks/base/libs/utils/Threads.cpp:128
__thread_entry
/home/sw/xgm/msm7x30/gingerbread/bionic/libc/bionic/pthread.c:208
pthread_create
/home/sw/xgm/msm7x30/gingerbread/bionic/libc/bionic/pthread.c:348


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值