编程基础

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命令定位代码时,要确保本地的代码和出问题的机器烧录版本的代码内容是一致的,这样定位才是准确的。

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



推荐阅读:

关于博主 

Camera基础及一些基本概念

Android Camera 学习路线 | 个人推荐

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

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

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

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




欢迎扫码关注「小驰行动派」公众号 10 年Camera开发 | Camera技术干货 | 行业洞察 | Camera实战分享
小驰行动派公众号 扫一扫关注
分享到: 复制链接
← 上一篇 Android Camera API 和 HAL版本对应关系 下一篇 → YUV测试源 经典网址。先收藏,会用的上

相关文章

推荐课程

想系统学习 Camera 开发?看看这些课程

评论 (0)

暂无评论,快来抢沙发吧