前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS App 启动必 crash 监控

iOS App 启动必 crash 监控

作者头像
刘笑江
发布2018-05-28 11:58:32
1.7K6
发布2018-05-28 11:58:32
举报
文章被收录于专栏:刘笑江的专栏刘笑江的专栏

摘要

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

feed_back
feed_back

用户看到的界面,是我们开源的 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_stack
crash_stack

启动必 crash 判断

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

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

启动必 crash 上报

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

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

开发者接入

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

crash_report
crash_report
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 特征值设计
  • 启动必 crash 判断
  • 启动必 crash 上报
  • 开发者接入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档