Android 利用addr2line 定位 native crash问题

addr2line bin文件,是在prebuilts目录下 ,如下所示,通过find -name aarch64-linux-android-addr2line 命令,能找的到64位bin文件所在的文件目录。

prebuilts$ find -name aarch64-linux-android-addr2line./gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line

在源码里面,在任意的位置,我们都能直接调用到addr2line 命令来使用。

使用命令如下:

addr2line  -C  -f  -e out/target/product/XXX/symbols/***.so 0000000000025494(堆栈地址)

注意so文件,得是symbols目录下的。

下面来看个实际的例子。

下面是logcat日志里面的异常堆栈信息,我们需要根据这些信息来定位具体代码的调用位置,进而来排查问题出现的原因。

1047  5334  5334 F DEBUG   :       #02 pc 000000000000e760  /vendor/lib64/libcamxncs.so (CamX::NCSService::StopNCSService()+240) (BuildId: 833401d49b1488e2db728189653417db)1047  5334  5334 F DEBUG   :       #03 pc 000000000000e564  /vendor/lib64/libcamxncs.so (CamX::NCSService::UnregisterService(CamX::NCSSensor*)+548) (BuildId: 833401d49b1488e2db728189653417db)

我们来看下这个是调用到了哪个具体代码。

1047 5334 5334 F DEBUG : #02 pc 000000000000e760 /vendor/lib64/libcamxncs.so (CamX::NCSService::StopNCSService()+240) (BuildId: 833401d49b1488e2db728189653417db)

首先在源码out目录下,搜索libcamxncs.so文件,找到libcamxncs.so 的symbols文件。

/out/target$ find -name libcamxncs.so./product/xxx/obj_arm/SHARED_LIBRARIES/libcamxncs_intermediates/libcamxncs.so./product/xxx/obj_arm/SHARED_LIBRARIES/libcamxncs_intermediates/LINKED/libcamxncs.so./product/xxx/symbols/vendor/lib64/libcamxncs.so./product/xxx/symbols/vendor/lib/libcamxncs.so

接下来,就可以采用addr2line命令。

$ addr2line -C -f -e out/target/product/XXX/symbols/vendor/lib64/libcamxncs.so 000000000000e760CamX::NCSService::StopNCSService()vendor/qcom/proprietary/camx/src/core/ncs/camxncsservice.cpp:369

那我们就可以看到,对应调用的代码是在vendor/qcom/proprietary/camx/src/core/ncs/camxncsservice.cpp下,369行。然后调用的函数是

StopNCSService(),这个调用的函数也是和异常堆栈是一致的。

其它的堆栈地址调用代码确认,也是按照这个方法来即可。

【注意】在本地用addr2line命令定位代码时,要确保本地的代码和出问题的机器烧录版本的代码内容是一致的,这样定位才是准确的。

《小驰行动派的知识星球》

————————————————

6751ede133dcb40ac90894e70ad9564c.jpeg


推荐阅读:

关于博主 

Camera基础及一些基本概念

Android Camera 学习路线 | 个人推荐

Android Camera开发系列(干货满满)

Camera Hal|如何学习一个新平台

一篇文章带你了解Android 最新Camera框架

学习完Camera入门课程视频,可以去找工作了?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小驰行动派

谢谢老板,今晚吃鸡~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值