基于友盟U-APM解决客户小姐姐Android Native Crash问题,小姐姐说我真棒,要把她闺蜜介绍给我

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
应用实时监控服务-用户体验监控,每月100OCU免费额度
应用实时监控服务-应用监控,每月50GB免费额度
简介: 客户小姐姐反馈一个Crash问题,但是概率很小,开发和测试都没遇到过。总不能让小姐姐帮忙抓取logcat日志。逼不得已,用上了杀手锏友盟+U-APM神器,重新给小姐姐更新了一版APK。然后,开瓶82年的冰阔落,坐等日志上来。

文章目录

·       一、遇到问题

·       二、Native日志分析

·       三、信号量(signal) 错误码(code)分析

·       四、PC指针addr2line定位

·  4.1 addr2line路径

·  4.2 so路径

·  4.3 addr2line查询

·       五、修改代码

·       六、后续~

一、遇到问题

客户小姐姐反馈一个Crash问题,但是概率很小,开发和测试都没遇到过。

总不能让小姐姐帮忙抓取logcat日志。

逼不得已,用上了杀手锏友盟+U-APM神器,重新给小姐姐更新了一版APK

然后,开瓶82年的冰阔落,坐等日志上来。

二、Native日志分析

来了来了,日志它来了。

乍看,有点慌。

这是大名鼎鼎的Native Crash啊。

这是隔壁C++组的锅啊,我就说像我这么资深的程序员,怎么可能写出这bug~

1.jpg

三、信号量(signal) 和 错误码(code)分析

不过,来都来了,看都看了,且再认真看看具体是哪里有bug~

点击全屏查看,一堆十六进制,咋看有点慌。

不过老司机带路,莫慌,翻开友盟的文档中心的Native崩溃说明

·       SIGSEGV,一个进程执行了一个无效的内存引用,或发生段错误。

·       SEGV_MAPERR,地址不在 /proc/self/map 映射中

看到这里,有点头绪咯,空指针段错误

跟着老司机,接着往下走,go~

2.jpg

3.jpg

哦.jpg

四、PC指针addr2line定位

4.1 addr2line路径

· 先找到ndk的路径,在local.properties

5.jpg

· 再找到addr2line

· 其中aarch64-linux-android-4.9arm-linux-androideabi-4.9都是可以的

6.jpg

4.2 so路径

7.jpg

4.3 addr2line查询

8.jpg

9.jpg

· 按照log的打印顺序,我们从下往上看,先执行cxa_demangle.cpp:309

· 但是,cxa_demangle是个啥东西呢

· 新的ABI委托执行C++运行库的入口

· 就是这个入口走错了?走到了空指针?

10.jpg

· 这时候重新在友盟+U-APM后台定睛一看,Java_com_umeng_crashdemo_MainActivity_stringFromJNI

· 那就先查它

11.jpg

五、修改代码

代码定位到这里来,一看代码,很简单啊

改改改!!!

12.jpg

13.jpg

六、后续~

重新打包个APK,发给客户小姐姐。

翘着二郎腿,再开一瓶冰阔落~

果不其然~

客户小姐姐很开心,说我真棒,要把她闺蜜介绍给我。

咦,我的春天来了~

我的嘴角不自觉扬起45°的微笑。

哎,醒醒,醒醒,要debug~~~




作者:康玮剑



相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
存储 JSON 监控
APM监控 · 入门篇 · Android端测监控平台建设(1)
APM 全称 Application Performance Management & Monitoring (应用性能管理/监控) 性能问题是导致 App 用户流失的罪魁祸首之一,如果用户在使用我们 App 的时候遇到诸如页面卡顿、响应速度慢、发热严重、流量电量消耗大等问题的时候,很可能就会卸载掉我们的 App。这也是我们在目前工作中面临的巨大挑战之一,尤其是低端机型。
2942 0
APM监控 · 入门篇 · Android端测监控平台建设(1)
|
编解码 Android开发
Android native层实现MediaCodec编码H264/HEVC
Android平台在上层实现mediacodec的编码,资料泛滥,已经不再是难事,今天给大家介绍下,如何在Android native层实现MediaCodec编码H264/HEVC,网上千篇一律的接口说明,这里不再赘述,本文主要介绍下,一些需要注意的点,权当抛砖引玉,相关设计界面如下:
246 0
|
4月前
|
开发工具 Android开发
Android项目架构设计问题之外部客户方便地设置回调如何解决
Android项目架构设计问题之外部客户方便地设置回调如何解决
29 0
|
6月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
5月前
|
Dart Android开发 Windows
Flutter和Native 通信 android端
Flutter和Native 通信 android端
|
Java Android开发
Android 进行友盟多渠道打包步骤详解
Android 进行友盟多渠道打包步骤详解
252 0
|
Java Android开发 C++
[Android JNI] --- 静态注册和动态注册实现java和native相互调用
[Android JNI] --- 静态注册和动态注册实现java和native相互调用
158 0
|
存储 消息中间件 监控
|
算法 Java 数据安全/隐私保护
frida hook native层巧解Android逆向题
frida hook native层巧解Android逆向题
|
Java 数据库 Android开发
Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
276 0
下一篇
无影云桌面