32 | 线上疑难问题该如何排查和跟踪?
张绍文
该思维导图由 AI 生成,仅供参考
“95% 以上的崩溃都能解决或者规避,大部分的系统崩溃也是如此”,这是我在专栏“崩溃优化”中曾经夸下的海口。
虽然收集了尽可能丰富的崩溃现场,但总会有一些情况是事先没有预料到的,我们无法直接从崩溃日志里找到原因。事实上我们面临的难题远远不止崩溃,比如说用户投诉文件下载到 99% 之后无法继续,那如何确定是用户手机网络不好,是后台服务器出错,还是客户端代码的 Bug?
我们的业务逻辑越来越复杂,应用运行的环境也变得越来越复杂,因此在实际工作中总会遇到大大小小的线上疑难问题。对于这些问题,如何将它们“抽丝剥茧”,有哪些武器可以帮助我们更好地排查和跟踪呢?
用户日志
对于疑难问题,我们可以把它们分为崩溃和非崩溃两类。一般有哪些传统的排查手段呢?
本地尝试复现。无论是崩溃还是功能性的问题,只要有稳定的复现路径,我们都可以在本地采用各种各样的手段或工具进行反复分析。但是真正的疑难问题往往都很难复现,它们可能跟用户机型、本地存储数据等环境有关。
发临时包或者灰度包。如果发临时包给用户,整个过程用户配合繁琐,而且解决问题的时间也会很长。很多时候我们根本无法联系到用户,这个时候只能通过发线上灰度包的方式。但是为了一步步缩小问题的范围,我们可能又需要一次次地灰度。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了移动应用开发中的线上疑难问题排查和跟踪的挑战,以及针对这些问题的排查手段和工具。作者首先提到了传统的排查手段,包括本地尝试复现和发临时包或者灰度包。接着介绍了两种日志工具:Xlog和Logan,以及Holmes的实现。Xlog是一个高性能的日志工具,可以让全量用户全天候打开日志,而Logan整合了各式各样的日志平台,打造成一个统一的日志平台。Holmes的实现需要对每个方法进行插桩来记录方法执行路径,但其实用性受到了质疑。总的来说,本文介绍了针对线上疑难问题排查和跟踪的一些工具和方法,为移动应用开发者提供了有益的参考和思路。文章还探讨了远程动态调试、动态部署和远程控制等方法,以及使用Lua脚本语言进行动态执行代码的能力。最后,强调了团队的“提质增效”需要寻找团队中的痛点,思考如何去改进,无论是流程的自动化还是开发新的工具、新的平台,都是朝着这个目标前进。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》,新⼈⾸单¥59
《Android 开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(8)
- 最新
- 精选
- eyeandroid请教下,系统日志是否有办法捞取
作者回复: 可以的,具体可以参考专栏第一章的置顶留言
2019-04-151 - luffy您好,看了一下Xlog和Logan,很不错的设计思想,只不过都没有开放对应的类似于bugly的平台,可以实时看到崩溃日志。而且日志也经过加密,那么我们移动端的小伙伴使用了这两个框架该如何查看日志呢?
作者回复: 现在的确是没有的,一般公司都是自己搞一个服务
2019-03-2731 - 亮很明显感觉到这篇文章涉及到的内容很多很深,要全部搞透不容易啊
作者回复: 是的,线上疑难问题,特别是类似libhwui这种系统崩溃并不是那么容易
2019-03-141 - Kristin应用该如何实现自己的用户标识体系兼容android Q
作者回复: 各个厂商都有搞一个唯一标识出来,这块需要去适配
2019-10-15 - zhongchao能讲讲libhwui类似疑难问题排查的方法和关键点么2019-09-2618
- kbjay对lua做了封装,可以很方便的动态调用java方法。实现文中提到的DB 查询、上报普通文本、ShardPreferences 查询、查询权限、追加埋点到本地、上传文件等综合能力;项目地址https://github.com/kbjay/KJLua;供参考,期待star。2022-10-24归属地:北京
- 跳跳课后作业:ROM开发者应生成伪标识,为不同应用的用一个用户生成不同的标识,以防止应用恶意追踪,同时,自己也应不恶意追踪用户行为。2022-09-22归属地:上海
- 荒hello作者,不知道你还在不在,关于lua我有些问题 我找到了一个安卓集成lua的工程,大概懂了lua的原理。 我认为是这样的,我们使用jni的方式集成lua的虚拟机,这样就提供了lua脚本语言的运行时环境了。 然后会在我们java代码的关键点提前打上lua脚本的调用方法,我认为这就是就是你文中说的预设。 当我们程序出问题的时候,我们可以下载的方式下载下来lua脚本。然后通过提前预设的lua脚本调用执行lua代码得到返回值,然后将返回值传给服务器这样就达到了动态下发、动态执行、回传日志的效果了。我认为这种方式的前提是我们必须提前预设好代码调用的点,不知道我理解的对不对。 目前对于lua的使用我只能理解这么多,作者能不能把给一个更具体的实际项目中使用lua的例子给我醍醐灌顶一下2021-03-18
收起评论