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.mzph.cn/news/159615.shtml

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

相关文章

2023做车载测试真的可以远离内耗!转行车载月入20K!

2023年&#xff0c;车载测试正处于一个发展阶段&#xff0c;随着新能源汽车的蓬勃发展&#xff0c;电气化、智能化逐渐成为发展趋势。在汽车开发过程中&#xff0c;测试是非常重要的一个环节。现在软件越来越多地被应用到汽车上&#xff0c;对软件测试的需求也越来越多、越来越…

数据库数据恢复—MongoDB数据库文件拷贝出现错误的数据恢复案例

MongoDB数据库数据恢复环境&#xff1a; 一台Windows Server操作系统的虚拟机&#xff0c;虚拟机上部署有MongoDB数据库。 MongoDB数据库故障&检测&#xff1a; 在未关闭MongoDB服务的情况下&#xff0c;工作人员将MongoDB数据库文件拷贝到其他分区&#xff0c;然后将原数…

力扣:175. 组合两个表(Python3)

题目&#xff1a; 表: Person ---------------------- | 列名 | 类型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- personId 是该表的主键&#xff08;具有唯一值的列&#…

js进阶笔记之原型,原型链

目录 1、原型对象 constructor 属性 对象原型 2、原型链 3、instanceof 4、原型继承 1、原型对象 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次调用就可以了。 面向对象是把事务分解成为…

音频采集的相关基础知识

本文引注: https://zhuanlan.zhihu.com/p/652629744 1.麦克风的种类 (1)模拟麦克风 ECM麦克风&#xff1a;驻极体电容麦克风(ECM)&#xff0c;典型的汽车ECM麦克风是一种将ECM单元与小型放大器电路整合在单个外壳中的装置。放大器提供一个模拟信号&#xff0c;其电压电平允许…

JavaScript 如何拷贝对像(Object)或者数组(Array)

目录 JavaScript数据拷贝类型 浅拷贝 深拷贝 举例&#xff1a; 浅拷贝 数组 对象 深拷贝 lodash cloneDeep使用示例 自定义深拷贝方法示例 JSON.parse() 和 JSON.stringify()使用示例 JavaScript数据拷贝类型 浅拷贝 数组可以使用Array.prototype.slice()方法 …

python实现鼠标实时坐标监测

python实现鼠标实时坐标监测 一、说明 使用了以下技术和库&#xff1a; tkinter&#xff1a;用于创建GUI界面。pyperclip&#xff1a;用于复制文本到剪贴板。pynput.mouse&#xff1a;用于监听鼠标事件&#xff0c;包括移动和点击。threading&#xff1a;用于创建多线程&…

PWM实验

PWM相关概念 PWM:脉冲宽度调制定时器 脉冲&#xff1a;方波信号&#xff0c;高低电平变化产生方波 周期&#xff1a;高低电平变化所需要时间 频率&#xff1a;1s钟可以产生方波个数 占空比&#xff1a;在一个方波内&#xff0c;高电平占用的百分比 宽度调制&#xff1a;占…

AI:86-基于深度学习的街景图像地理位置识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

Leetcode:622. 设计循环队列 题解【具详细】

目录 一、题目&#xff1a; 二、思路详解&#xff1a; 1.循环队列的存储定义 2.循环队列的创建 3.循环队列的判空与判断情况 (1) 循环队列的判空: (2) 循环队列的判满 4.循环队列元素的插入 5.循环队列元素的删除 6.获取队头元素 7.获取队尾元素 8.循环队列释放 三…

打不开clickonce问题解决过程

1.用户电脑user文件夹下有xx和xx.1两个账户,原先安装在xx账户下,后修了电脑原数据保留在xx.1,新创建XX,之后clickonce就打不开了表现为没有反应,,删除注册表和appdata都只能正常安装,但是不能打开,没有任何报错,发现在我的电脑下打开有这样的提示,,在用户电脑上没有 尝试通过修…

大家为什么开始配置长效IP代理?长效IP代理有什么优势?

随着网络技术的发展&#xff0c;越来越多的人开始关注网络安全和隐私保护。其中&#xff0c;长效IP代理作为一种安全、高效的解决方案&#xff0c;受到了越来越多人的关注。本文将探讨大家为什么开始配置长效IP代理&#xff0c;以及长效IP代理的优势。 一、长效IP代理的优势1.保…

目前市面上进销存软件有哪些?那个牌子靠谱?

目前市面上进销存软件有哪些&#xff1f;哪个牌子靠谱&#xff1f; 说起进销存软件&#xff0c;如果你是没用过&#xff0c;正在寻找一款合适的&#xff0c;你是不是遇到了以下问题&#xff1a; 公司多部门协作还在用Excel&#xff0c;没有信息化支撑&#xff1f;跨部门存在信…

C语言——深入理解指针——函数指针

一、函数指针变量 1.1 函数指针变量的创建 什么是函数指针变量呢&#xff1f; 函数指针变量应该是用来存放函数地址的&#xff0c;未来通过地址能够调⽤函数的。 那么函数是否有地址呢&#xff1f; 我们做个测试&#xff1a; #include <stdio.h> void test() {print…

软考中级哪个科目最简单?

那必须是系统集成项目管理工程师&#xff01; 系统集成项目管理工程师考试内容少&#xff0c;题型简&#xff0c;报考门槛低&#xff0c;零基础就能报考&#xff0c;学习内容比较简单&#xff0c;接近工作和生活。 系统集成项目管理工程师证书是中国计算机技术职业资格&#…

2024年湖北省水利厅的安管人员水安ABC证报考指南

2024年湖北省水利厅的安管人员水安ABC证报考指南 关于水安ABC报考&#xff0c;很多企业乃至个人都不是很清楚流程&#xff0c;叙后尘来给大家科普一下报考详细细节。2023年年度仅剩一次的报考时间定于2023年11月23日至11月28日。在这个时间段才可以网上填写报考资料&#xff0…

js读取json文件

1. 原生的两种方法 1.1 XMLHttpRequest const xhr new XMLHttpRequest(); xhr.overrideMimeType("application/json"); xhr.open(GET, data.json, true); xhr.onreadystatechange function () {if (xhr.readyState 4 && xhr.status 200) {const data …

使用EasyPlayer播放H.265视频流

使用EasyPlayer播放H.265视频流 EasyPlayer流媒体视频播放器 EasyPlayer流媒体视频播放器 EasyPlayer流媒体视频播放器可支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff0c;能支持RTSP、RTMP、HLS、FLV、WebRTC等格式的视频流播放&#xff0c;并且已实现网页…

Cannot read properties of undefined (reading ‘resetFields‘)“ 报错解决

遇到这种报错 先去相关页面搜索关键字 定位到具体的报错代码 Cannot read properties of undefined (reading ‘resetFields’)" 关键字&#xff1a;resetFields 此方法作用&#xff1a;对整个表单进行重置 将所有字段值重置为初始值并移除校验结果 报错场景&#xff1a;…

坚鹏:湖北银行数字化转型背景下银行运营管理创新培训圆满结束

湖北银行正式成立于2011年2月27日&#xff0c;总部设在武汉。现有员工5000余人。营业网点从成立之初的93家增长至241家&#xff0c;实现全省17个市州、59个县域营业网点全覆盖。截至2022年末&#xff0c;全行资产总额4026亿元&#xff0c;存款总额2956亿元&#xff0c;贷款总额…