Android JNI 异常定位(2)—— addr2line

Android native报错有时候只有一句 signal 11 (SIGSEGV),这种情况仅通过log是很难定位到问题的。不过Android 在/data/tombstones目录保存了错误的堆栈信息,为定位bug提供了路径。不过一般这里的log都无法像java一样直接定位的出错的行数。如下图:

--------- beginning of crash
11-21 11:31:40.633 F/libc    ( 1127): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xcbb45812 in tid 1260 (RenderThread)
11-21 11:31:40.633 W/        (  203): debuggerd: handling request: pid=1127 uid=1000 gid=1000 tid=1260
11-21 11:31:40.646 E/JNI_MANAGER( 1127): WebRtcAecm_BufferFarend
11-21 11:31:40.647 E/JNI_MANAGER( 1127): WebRtcAecm_BufferFarend
11-21 11:31:40.731 F/DEBUG   ( 2352): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-21 11:31:40.732 F/DEBUG   ( 2352): Build fingerprint: 'Android/rk3288/rk3288:7.1.2/NHG47K/zoeyli08041021:userdebug/test-keys'
11-21 11:31:40.732 F/DEBUG   ( 2352): Revision: '0'
11-21 11:31:40.733 F/DEBUG   ( 2352): ABI: 'arm'
11-21 11:31:40.734 F/DEBUG   ( 2352): pid: 1127, tid: 1260, name: RenderThread  >>> com.intercom.supervisor <<<
11-21 11:31:40.734 F/DEBUG   ( 2352): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xcbb45812
11-21 11:31:40.735 F/DEBUG   ( 2352):     r0 7f1d9fc0  r1 900f4ef8  r2 cbb457f2  r3 01000000
11-21 11:31:40.735 F/DEBUG   ( 2352):     r4 900f4f20  r5 7ed04880  r6 00000004  r7 00000001
11-21 11:31:40.736 F/DEBUG   ( 2352):     r8 7ed04830  r9 900f4f60  sl 900f4f20  fp 00000001
11-21 11:31:40.736 F/DEBUG   ( 2352):     ip a358dba8  sp 900f4ef0  lr a1d558b0  pc a1d5f518  cpsr 20070010
11-21 11:31:40.750 W/AudioFlinger(  234): RecordThread: buffer overflow
11-21 11:31:40.794 F/DEBUG   ( 2352): 
11-21 11:31:40.794 F/DEBUG   ( 2352): backtrace:
11-21 11:31:40.794 F/DEBUG   ( 2352):     #00 pc 0043e518  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.794 F/DEBUG   ( 2352):     #01 pc 004348ac  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.794 F/DEBUG   ( 2352):     #02 pc 00326090  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.794 F/DEBUG   ( 2352):     #03 pc 00323b1c  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.794 F/DEBUG   ( 2352):     #04 pc 00447a60  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.794 F/DEBUG   ( 2352):     #05 pc 00455750  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.795 F/DEBUG   ( 2352):     #06 pc 004503dc  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.795 F/DEBUG   ( 2352):     #07 pc 0044e8b8  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.795 F/DEBUG   ( 2352):     #08 pc 0044f18c  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.795 F/DEBUG   ( 2352):     #09 pc 0044f260  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.795 F/DEBUG   ( 2352):     #10 pc 003ab1ac  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.795 F/DEBUG   ( 2352):     #11 pc 0038664c  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.795 F/DEBUG   ( 2352):     #12 pc 00695288  /vendor/lib/egl/libGLES_mali.so
11-21 11:31:40.796 F/DEBUG   ( 2352):     #13 pc 0069e3bc  /vendor/lib/egl/libGLES_mali.so (eglMakeCurrent+1488)
11-21 11:31:40.796 F/DEBUG   ( 2352):     #14 pc 0000ac41  /system/lib/libEGL.so (_ZN7android13egl_display_t11makeCurrentEPNS_13egl_context_tES2_PvS3_S3_S3_S3_S3_+192)
11-21 11:31:40.796 F/DEBUG   ( 2352):     #15 pc 0000d497  /system/lib/libEGL.so (eglMakeCurrent+290)
11-21 11:31:40.796 F/DEBUG   ( 2352):     #16 pc 000263e9  /system/lib/libhwui.so
11-21 11:31:40.796 F/DEBUG   ( 2352):     #17 pc 0002667d  /system/lib/libhwui.so
11-21 11:31:40.796 F/DEBUG   ( 2352):     #18 pc 0002344b  /system/lib/libhwui.so
11-21 11:31:40.796 F/DEBUG   ( 2352):     #19 pc 00023339  /system/lib/libhwui.so
11-21 11:31:40.796 F/DEBUG   ( 2352):     #20 pc 000272e5  /system/lib/libhwui.so
11-21 11:31:40.797 F/DEBUG   ( 2352):     #21 pc 00028117  /system/lib/libhwui.so
11-21 11:31:40.797 F/DEBUG   ( 2352):     #22 pc 00028857  /system/lib/libhwui.so
11-21 11:31:40.797 F/DEBUG   ( 2352):     #23 pc 00029139  /system/lib/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+80)
11-21 11:31:40.797 F/DEBUG   ( 2352):     #24 pc 0000e325  /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+144)
11-21 11:31:40.797 F/DEBUG   ( 2352):     #25 pc 00067f29  /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+80)
11-21 11:31:40.797 F/DEBUG   ( 2352):     #26 pc 00047323  /system/lib/libc.so (_ZL15__pthread_startPv+22)
11-21 11:31:40.797 F/DEBUG   ( 2352):     #27 pc 00019e5d  /system/lib/libc.so (__start_thread+6)
11-21 11:31:41.277 I/AudioFlinger(  234): BUFFER TIMEOUT: remove(4098) from active list on thread 0xad983d00
11-21 11:31:41.742 E/        ( 2352): debuggerd: failed to kill process 1127: No such process
11-21 11:31:41.748 W/        (  203): debuggerd: resuming target 1127
11-21 11:31:41.750 I/BootReceiver(  485): Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
  • 先看崩溃的tid:1260,不是主线程,说明是子线程。
  • 最后一行/data/tombstones/tombstone_05提示异常日志保存在了tombstone_05文件里面
    在这里插入图片描述

backtrace需要借助Android ndk提供的addr2line工具来分析,从工具的名字就能看出来,这个东西可以帮我们把报错的地址指向代码行,以协助我们排查问题。
看工具的使用方式:

1.找到本地ndk路径下的addr2line的程序

我的路径“D:\Android\ndk\android-ndk-r10e\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin”
在这里插入图片描述
这里需要注意toolchains下根据系统架构区分多个目录,需要根据自己运行的系统进行区分,否则会报File format not recognized 错误。我的是64位系统,所以选了图示目录

在这里插入图片描述

2.打开命令行跳转至该目录

2.1、直接在路径下输入cmd,然后按enter键,就可以直接打开命令行窗口,并且跳转到该路径下面

在这里插入图片描述
在这里插入图片描述

3.使用addr2line -e命令

aarch64-linux-android-addr2line -e D:\Android\AndroidStudio\Project\ManagerJni\obj\local\armeabi\intercomManager.so 00019e5d

在这里插入图片描述

  • 红色1、so库必须是带有符号表的
  • 红色2、为异常的地址
  • 最后一行就转换出了异常所在的行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/206686.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达《机器学习》9-7-9-8:综合起来、自主驾驶

在神经网络的使用过程中&#xff0c;需要经历一系列步骤&#xff0c;从网络结构的选择到训练过程的实施。以下是使用神经网络时的主要步骤的小结&#xff1a; 一、网络结构的选择 输入层&#xff1a; 第一步是选择网络结构&#xff0c;即确定神经网络的层数以及每层的单元数。…

AIGC前沿技术与数字创新应用合作交流和论坛发布活动圆满落幕

2023年11月17日下午&#xff0c;AIGC前沿技术与数字创新应用合作交流和论坛发布活动在北京市海淀区牡丹科技楼B座B1报告厅成功举办。 在这个以技术为驱动力的时代&#xff0c;AIGC等这些前沿技术正以惊人的速度改变着我们的生活和产业格局。利用新兴技术和数字化工具来解决问题…

Unity中Shader反射环境

文章目录 前言一、制作反射环境的两种办法法1&#xff1a;属性面板接收一个 Cubemap 作为反射环境法2&#xff1a;把环境烘焙成一张Cubemap 二、在Unity中实现把环境烘焙成一张Cubemap1、先创建一个反射探针&#xff08;可以直接创建&#xff0c;也可以空物体增加组件&#xff…

【U8+】用友U8账套引入/还原,提示:逻辑文件‘UFModel’不是数据库的一部分。

【问题描述】 用友U8+账套引入(恢复账套)的时候,提示: 逻辑文件‘UFModel’不是数据库‘UFDATA_001_2015’的一部分。 请使用RESTORE FILELISTONLY来列出逻辑文件名。-2147217900 【解决方法】 查看用友U8+正常账套库正确的逻辑名称为【UFMODEL】和【UFMODEL_log】。 【…

赛轮集团SAILUN方程式赛车轮胎震撼登场,开启新篇章

11月初&#xff0c;在厦门国际赛车场&#xff0c;SAILUN方程式赛车轮胎展现出令人瞩目的实力&#xff0c;成功完成了首次震撼亮相。这一引人注目的表现为未来的赛车轮胎技术发展打开了崭新的一页。 在这次首次亮相的测试中&#xff0c;职业车手巧妙操控着SAILUN方程式赛车轮胎&…

气膜体育馆:低碳环保体育新潮流

在追求健康生活的今天&#xff0c;体育运动的重要性无法忽视。为了满足人民日益增长的体育需求&#xff0c;气膜体育馆应运而生&#xff0c;成为体育场馆领域的一次革命性创新。这种新型体育馆解决了传统体育场馆建设中面临的审批难、周期长、门槛高等问题&#xff0c;为我们的…

真菌基因组研究高分策略(一):比较基因组揭示真菌菌丝和多细胞的起源

真菌是陆地和水生生态系统的重要组分&#xff0c;在有机质循环和跨营养级养分流通等过程中发挥着重要作用。随着测序技术的发展&#xff0c;高通量测序揭示了真菌群落巨大的系统发育和功能多样性&#xff0c;高质量真菌基因组的组装已经成为研究菌丝和潜在基因的进化起源的有力…

【RocketMq系列-02】RocketMq的架构解析和高性能设计

RocketMq系列整体栏目 内容链接地址【一】RocketMq安装和基本概念https://zhenghuisheng.blog.csdn.net/article/details/134486709【二】RocketMq的架构解析和高性能设计/font>https://zhenghuisheng.blog.csdn.net/article/details/134559514 RocketMq的架构解析和高性能设…

Redis7--基础篇3(持久化)

持久化介绍 官网地址&#xff1a; https://redis.io/docs/manual/persistence RDB(Redis DataBase)AOF(Append Only File)RDB AOF RDB模式(Redis DataBase) RDB 持久性以指定的时间间隔执行数据集的时间点快照。 实现类似照片记录效果的方式&#xff0c;就是把某一时刻的数据…

redis之高可用

&#xff08;一&#xff09;redis之高可用 1、在集群当中有一个非常重要的指标&#xff0c;提供正常服务的时间的百分比&#xff08;365天&#xff09;99.9% 2、redis的高可用的含义更加广泛&#xff0c;正常服务是指标之一&#xff0c;数据容量的扩展、数据的安全性 3、在r…

论文阅读 Forecasting at Scale (一)

最近在看时间序列的文章&#xff0c;回顾下经典 论文地址 项目地址 Forecasting at Scale 摘要1、介绍2、时间业务序列的特点3、Prophet预测模型3.1、趋势模型3.1.1、非线性饱和增长3.1.2、具有变化点的线性趋势3.1.3、自动转换点选择3.1.4、趋势预测的不确定性 摘要 预测是一…