iOS App 启动必 crash 监控

摘要

在 iOS 11 Beta 刚刚发布时,有用户在微博反馈:升级到 iOS 11 Beta 后,微信读书 App 遇到启动必 crash 的绝境,无法使用。

用户看到的界面,是我们开源的 iOS 启动连续闪退保护方案 提示。

调试发现,是一段 iOS 11 不兼容的代码引发的问题。我们通过修改不兼容代码,解决了问题。

等到现网用户反馈,为时太晚,如何把启动必 crash 问题纳入监控?

我们设计了一个特征值以判断这个问题,并扩展了 iOS 启动连续闪退保护方案,提供了日志上报接口,帮助开发者在第一时间发现启动必 crash 问题。

特征值设计

在每次检测到 crash 后,我们需要生成一个特征值,帮助判断 App 是否遇到启动必 crash。特征值应该包括:

  • 时间维度:衡量最近几次 crash 的时间间隔是否连续。
  • crash 原因维度:衡量最近几次 crash 原因是否一致。

我们设计特征格式如下:

1

t1|d1|t2|d2|t3|d3|...

  • ti 表示最近 i 次crash,与最近 i+1 次 crash 的 App 存活时间的差值。
  • di 表示最近 i 次crash,与最近 i+1 次 crash 的堆栈 offset 组成的向量的距离。其中 crash 的堆栈 offset,即下图的蓝框内的数字。di 可以表示两次 crash 之间的原因相似度,如果等于 0 则表示 crash 原因一致。

启动必 crash 判断

如果特征值为:0|0|0|0…,用户遇到了启动必 crash 的问题,且 crash 堆栈一致。

如果特征值为:0|244|0|378…,用户遇到了启动必 crash 的问题,但 crash 堆栈不一致。

启动必 crash 上报

如果特征值属于上述情况,认为用户遇到启动必 crash 的问题,执行指定的上报方法。

开发者可以接入实时监控系统,当上报人次符合一定条件,执行告警通知。

开发者接入

开发者在 iOS 项目引入 GYBootingProtection 组件后, AppDelegate+GYBootingProtection.m ,插入一行上报代码,即可把启动必 crash 纳入监控。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逍遥剑客的游戏开发

移植了OVRLipSync到UE4

5086
来自专栏SDNLAB

Unikernel初体验

引言: 2016年1月21日,应用容器引擎 Docker 宣布收购了英国的 unikernel 实现初创企业 Unikernel System,但具体交易金额并...

4506
来自专栏媒矿工厂

定义和测量延迟

想要优化延迟,可Latency到底是多少?延迟始终是媒体内容传输的一个重要关注点,人们也在不断尝试用新的方法来优化延迟,本文参考AWS的一些新技术,介绍了延迟的...

3483
来自专栏DevOps时代的专栏

测试影响分析(TIA),让测试更快的技术

? 构建过程中,测试影响分析(TIA)是一种加快自动化测试的新式方法。它的 工作原理就是通过获得新的代码变动,分析这些代码的调用关系图来判断应该调 用那些自动...

28210
来自专栏程序员互动联盟

【专业技能】前端开发眼里的页面

拿到效果图时,有这么几步,就我了解的情况做一下分享,不一定全部都是科学,但可以部分借鉴。 我先说一下,熟练后拿到效果图时这样的一个状态: ? http...

3476
来自专栏无原型不设计

如何设计出正确的搜索模式?

以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具。 ? 如果你正在阅读这篇文章,那么你一定正在设计一个有搜索...

6256
来自专栏无原型不设计

关于流程图设计,你需要Get的几点必备知识

流程图(Flow Chart)这个概念对很多人来说并不陌生,但如果让你定义或者举例说明什么是产品流程图,恐怕还是有难度的。或许诸如“用户体验”、“交互设计”、...

3615
来自专栏IT大咖说

Metrics:让微服务运行更透明

摘要 让微服务运行状态清晰可见。 Metrics是什么 直译是“度量”,不同的领域定义有所区别,在微服务领域中的定义: “对微服务的某个指标给予一个可量化程度的...

52412
来自专栏人工智能LeadAI

python爬虫学习:电商数据分析

通常我们在使用爬虫的时候会爬取很多数据,而这些数据里边什么是有用的数据,什么是没用的数据这个是值得我们关注的,在这一篇文章里,我们将通过一个简单的爬虫,来去简单...

4572
来自专栏程序人生

从开发者的角度看:打包和部署

如今的互联网软件越来越碎片化(micro services),Queue无处不在,服务依赖越来越多,使得软件功能的开发,到软件功能的部署,中间有很长的一段路。这...

3649

扫码关注云+社区

领取腾讯云代金券