去年我开始负责iOS崩溃治理的工作,从原来的万分之五崩溃率,一直到现在的万分之一左右的崩溃率,期间踩了很多坑,因此想和大家分享一下,希望能对大家有所帮助,也欢迎大家私信交流。

如果你打算开始治理崩溃的话,建议你先想一下以下的问题:

如何高效地去定位修复崩溃?

修复线上收集到的崩溃,可以说这是无法避免的体力活,大部分的崩溃事实上并不复杂,都不难解决,但怎么快速定位是个问题。

大部分的崩溃堆栈很清晰,通过日志我们可以很容易定位到有问题的代码,但有些崩溃日志,很可能只有一堆系统相关的堆栈,很难对应到业务代码。对于类似情况,有没有相关的应对方案,决定了你的崩溃修复效率。

除了解决线上收集到的崩溃还要做些什么?

解决线上收集到的崩溃是必须的,但这只是个必要不充分条件。如果你只是case by case地解决线上崩溃,那很快你就会疲于奔命,被困在无休止的体力活当中。

原因主要有以下几点:

1,你所处的项目比较大,可能涉及到好几个团队的协作

2,每次发版都可能引入新的崩溃

3,后端的改动也可能引起线上崩溃

4,新系统的发布也可能引起问题

如何推动跨团队的协作?

对于一个比较大的App来说,通常都会涉及到多个团队的合作。比如说,登录SDK,IM,日志上报等功能,一般都会有专门的团队负责。也就是说,线上的某个崩溃很可能要找另外一个团队的人解决,即使你知道怎么修复,也很可能没权限。这时候仅仅靠你去协调是不现实的,这会耗费你大量的精力。

每次发版总会有新的崩溃要如何解决?

新需求总是会伴随着或多或少的崩溃,每次发版都会有着上涨的风险,毕竟研发和QA也都是普通人,不可能不毫无遗漏。要如何降低这种风险,以及在问题发生之后如何及时止损。

线上突然爆出问题该怎么办?

线上突然出现崩溃的情况其实并不少见,尤其是和服务端交互比较多的App,甚至是一些有网络请求的三方库也可能引起类似问题,这时候要怎么及时发现问题, 如何及时修复止损。

有没有一劳永逸的方法?

这是终极目标,但是很难,因为项目总在迭代,即使你不迭代(不迭代这项目也没有什么价值了),系统也会更新。但即使做不到一劳永逸,我们是不是可以找到一些方式,让我们只需要花很少的时间来维持线上稳定。

对于这些问题,从手段方面,我分为三种,基础设施,流程规范,技术防控。从时间点上,又可以分为事前,事中,事后。后续我会从这些方面来跟大家分享自己的一些经验,有些内容可能在大家的项目中已经实现了甚至是做的更好,有些内容可能是你所欠缺的,希望能和大家多多交流。

iOS崩溃治理--开篇的更多相关文章

  1. iOS崩溃调试的使用和技巧总结

    在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题.简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的. 现在网上有很多关于解 ...

  2. Android&iOS崩溃堆栈上报

    Android&iOS崩溃堆栈上报 原文地址:http://www.cnblogs.com/songcf/p/4885468.html 通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常, ...

  3. iOS崩溃日志ips文件解析

    iOS崩溃日志ips文件解析  一 简介 测试组的同事在进行稳定性测试时,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下 ...

  4. 详解没有dSYM文件 如何解析iOS崩溃日志

    Xcode支持崩溃日志自动符号化,前提是本地有当时Build/Archive生成的dSYM文件,iOS崩溃日志符号化后,可以帮助开发者更好的定位问题,但如果dSYM文件丢失或拿到的崩溃日志不是标准的c ...

  5. 转: iOS崩溃堆栈符号表使用与用途

    转:http://bugly.qq.com/blog/?p=119 iOS崩溃堆栈符号化,定位问题分分钟搞定! 2015.3.16 腾讯Bugly 微信分享   最近一段时间,在跟开发者沟通过程中,萝 ...

  6. iOS 崩溃日志分析(个人总结,最实用)

    iOS 崩溃日志分析(个人总结,最实用) 要分析奔溃日志需要三个文件:crash日志,symbolicatecrash分析工具,.dSYM符号集 0. 在桌面创建一个crash文件夹 1. 需要Xco ...

  7. iOS崩溃日志

    今天看crash report ,有这样两个crash: 调用 stopUpdatingLocation 函数的是一个CLLocationManager 类型的对象,为什么报错的时候会把这个对象转成N ...

  8. 常用获取Android崩溃日志和IOS崩溃日志的几种方法

    一:前言 在日常测试app时,经常会遇到崩溃问题,测试快速抓取到崩溃日志可以有效方便开发进行定位,快速解决问题所在测试做到测试分析,定位是非常重要的,这也是判断一个测试能力指标的一大维度. 二:And ...

  9. iOS 崩溃日志 Backtrace的符号化

    iOS的崩溃日志配合dsym文件可以找到崩溃时的backtrace,这是解决崩溃的最重要的信息. 如果是在同一台mac上打包, 导入crash log时候会自动将backtrace符号化,可以看到方法 ...

随机推荐

  1. GoFrame 模板引擎对变量转义输出- XSS 漏洞

    GoFrame 模板引擎对变量转义输出- XSS 漏洞 环境: gf v1.14.4 go 1.11 官网说明 默认情况下,模板引擎对所有的变量输出并没有使用HTML转码处理,也就是说,如果开发者处理 ...

  2. kali查看本机ip

  3. springmvc<一> 一些特殊的Bean

    Special Bean Types        HandlerMapping 基于前置或后置拦截器映射请求到处理器,具体实现方式由子类决定,        两种主要的实现             ...

  4. 第7.13节 案例详解:Python类变量

    第7.13节 案例详解:Python类变量 上节介绍了类变量的定义和使用方法,并举例进行了说明.本节将通过一个更完整的例子来说明. 一.    定义函数dirp def dirp(iter): ret ...

  5. 第十三章 Python基础篇结束章

    从2019年3月底开始学习Python,4月份开始在CSDN发博客,至今不到半年,老猿认为博客内容中关于Python基础知识的内容已经基本告一段落,本章进入Python基础知识结束章节,对Python ...

  6. PyQt(Python+Qt)学习随笔:Qt Designer中部件的enabled属性

    enabled属性非常简单,最开始老猿没准备介绍该属性的,因为大家都应该知道,但仔细看了看官网文章,觉得还是有些细节可能很少有人注意到,因此还是在此介绍一下. enabled属性用于表示部件是否可用, ...

  7. 原生JS学习之秒表、日历

    Tips:涉及知识点:Date   setInterval    DOM    秒表 效果图: 简单构造出草图 Html代码 1 <!DOCTYPE html> 2 <html> ...

  8. Panda 交易所快报 央行数字货币测试进入C端流量入口

    近年来,央行数字货币的研发进展备受市场关注.近期,Panda 交易所注意,央行数字货币研究所与滴滴出行已达成战略合作协议,共同研究探索数字人民币在智慧出行领域的场景创新和应用.此外,Panda 交易所 ...

  9. Java并发编程的艺术(一)——并发编程的注意问题

    并发编程是为了使程序运行得更快,但是,不是启动更多得线程就能最大限度地执行并发,也不是线程更多就能使得程序运行得更快,而且并发编程更容易产生错误,如果要高效且正确地执行并发,就需要注意这三种问题 上下 ...

  10. 调用windows系统下的cmd命令窗口处理文件

    从后缀名为grib2的文件中查询相关的信息,并将查出来的信息保存起来. 主要是学习java中调用windows下的cmd平台,并进行执行相关的命令. package com.wis.wgrib2; i ...