使用addr2line工具定位NE异常问题

本文介绍在Linux环境下,如何使用addr2line工具将NE异常的内存地址转换为具体的代码文件和行号,以快速定位问题所在。通过解析异常日志,找到出现问题的.so文件,使用addr2line命令即可获取到出错的具体位置。

一般碰到NE的异常需要通过addr2line把异常地址转成code文件和行号。在Linux环境下,我们可以直接使用命令直接定位。操作如下:

1)遇到如下NE的Log输出:

01-01 12:04:27.570097  1048  1048 F DEBUG   : backtrace:
01-01 12:04:27.570229  1048  1048 F DEBUG   :     #00 pc 0000224a  /system/bin/bootanimation (audioplay::playClip(unsigned char const*, int)+102)
01-01 12:04:27.570339  1048  1048 F DEBUG   :     #01 pc 00001a55  /system/bin/bootanimation ((anonymous namespace)::AudioAnimationCallbacks::playPart(int, android::BootAnimation::Animation::Part const&, int)+200)
01-01 12:04:27.570467  1048  1048 F DEBUG   :     #02 pc 0000755d  /system/lib/libbootanimation.so (android::BootAnimation::playAnimation(android::BootAnimation::Animation const&)+344)
01-01 12:04:27.570536  1048  1048 F DEBUG   :     #03 pc 0000664f  /system/lib/libbootanimation.so (android::BootAnimation::movie()+434)
01-01 12:04:27.570576  1048  1048 F DEBUG   :     #04 pc 00006175  /system/lib/libbootanimation.so (android::BootAnimation::threadLoop()+16)
01-01 12:04:27.570611  1048  1048 F DEBUG   :     #05 pc 0000c08b  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+166)
01-01 12:04:27.570645  1048  1048 F DEBUG   :     #06 pc 000632e5  /system/lib/libc.so (__pthread_start(void*)+22)
01-01 12:04:27.570677  1048  1048 F DEBUG   :     #07 pc 0001de49  /system/lib/libc.so (__start_thread+24)

2)libbootanimation.so是出现问题的文件,我们可以从\out\target\product\XXX\symbols(本地编过该项目的路径)下面找到该库文件(这个so一定要是出问题的版本的so,即使是同个项目不同软件,都不能代替)。

 

3)使用如下命令可以定位出问题的行数

addr2line -e XXX.so 0000755d

可以快速定位到出问题的代码位于BootAnimation.cpp文件的898行、855行等

android@ubuntu:~/桌面$ addr2line -e libbootanimation.so 0000755d
frameworks/base/cmds/bootanimation/BootAnimation.cpp:898

android@ubuntu:~/桌面$ addr2line -e libbootanimation.so 0000664f
frameworks/base/cmds/bootanimation/BootAnimation.cpp:855

android@ubuntu:~/桌面$ addr2line -e libbootanimation.so 00006175
frameworks/base/cmds/bootanimation/BootAnimation.cpp:346

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值