转载自:https://blog.csdn.net/qxuewei/article/details/90760508

iOS进阶 - iOS如何监控崩溃
几种常见的崩溃
数组越界;给数组添加 nil;
多线程问题: 在子线程更新UI, 不同线程操作同一个数据。
主线程无响应:主线程超过系统规定时间无响应就会被 Watchdog 杀掉。
野指针:指针指向一个已删除的内存区域会出现野指针崩溃。
KVO 问题
后台任务超时
iOS 后台保活的五种方式
1. Background Mode
App 审核时会提高对 App 的要求。通常情况下只有那些 地图、音乐播放、VoIP类的App 才能通过审核

2. Background Fetch
唤醒时间不稳定,而且用户可以在系统设置关闭这种方式,导致它的使用场景很少

3. Silent Push
推送的一种,会在后台唤起 App 30秒。它的优先级很低,会调用 application:didReceiveRemoteNotifiacation:fetchCompletionHandler: 这个 Delegate, 和普通的 remote push notification 推送调用的 delegate 是一样的

4. PushKit
后台唤醒 App 后能够保活 30 秒。主要用于提升 VoIP 应用的体验

5. Background Task 方式
是使用最多的,App 退后台后,默认都会使用这种方式

通常,程序在退到后台以后,只有几秒钟的时间可以执行代码,接下来就会被系统挂起。进程挂起后所有线程都会暂停,不管这个线程是文件读写还是内存读写都会被暂停,但是,数据读写过程无法暂停只能被中断,中断时数据读写异常而且容易损坏文件,所以系统会选择主动杀掉 App 进程。

而 Background Task 方式就是系统提供了 beginBackgroundTaskWithExpirationHandler 方法来延长后台执行时间,可以解决退后台还需要一段时间处理一些任务的诉求。

Background Task 方式的使用方法,如下代码所示:

- (void)applicationDidEnterBackground:(UIApplication *)application {
self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
[self yourTask];
}];
}
1
2
3
4
5
这段代码中,yourTask 任务最多执行 3 分钟,3 分钟内 yourTask 运行完成,你的App就会挂起。如果3分钟内没有执行完成的话,系统会强制杀掉进程,从而造成崩溃,这就是为什么 App 退后台容易出现崩溃的原因。

如何避免后台崩溃
App 退后台后,如果执行时间过长就会导致被系统杀掉,那么我们就不能让程序进入后台后执行复杂的任务。如严格控制后台数据的读写操作。在需要处理数据时先判断其大小,如果数据过大可以考虑程序下次启动或后台唤醒时再进行处理。

分析并解决崩溃问题
采集到的崩溃日志主要包括:

进程信息:崩溃进城相关信息,比如崩溃报告唯一标示符、唯一键值、设备标识;
基本信息:崩溃发生的日期,iOS版本
异常信息:异常类型,异常编码,异常的线程;
线程回溯:崩溃时的方法调用栈
通常情况下,我们分析崩溃日志时最先看的是异常信息,分析出问题的是哪个线程,在线程回溯
里找到那个线程;然后,分析方法调用栈,符号化后的方法调用栈可以完整地看到方法调用的过
程,从而知道问题发生在哪个方法的调用上。

方法调用栈顶,就是最后导致崩溃的方法的调用。完整的崩溃日志里,除了线程方法调用栈还有异常编码,就在异常信息里。在 完整的异常编码 里可以看到44种异常编码。常见的三种如下:

0x8badf00d,表示 App 在一定时间内无响应而被 watchdog 杀掉的情况。
0xdeadfa11,表示 App 被用户强制退出。
0xc00010ff,表示 App 因为运行造成设备温度太高而被杀掉。

转载于:https://www.cnblogs.com/IT-DavidYang/p/10977214.html

iOS进阶 - iOS如何监控崩溃相关推荐

  1. iOS 进阶—— iOS内存管理

    1 似乎每个人在学习 iOS 过程中都考虑过的问题 alloc retain release delloc 做了什么? autoreleasepool 是怎样实现的? __unsafe_unretai ...

  2. iOS进阶之架构设计MVVM的理解(3)

    iOS进阶之架构设计MVC(1) iOS进阶之架构设计MVP(2) 前言: 前两篇文章已经理解MVC.MVP的设计模式.特别是MVP,比较难以理解,不好把握.需要多多实践,对比.来优化P段,找到最适合 ...

  3. 带有框架的iOS应用在设备上崩溃,dyld:库未加载,Xcode 6 Beta

    本文翻译自:iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta This crash ha ...

  4. ios 获取是否静音模式_高效人士进阶-IOS

    现在智能手机发展越来越快,各种新闻.视频.游戏等等开始分化我们的时间,日常时间开始越来越不够用,我今天给大家带来一点苹果手机使用的小技能,做真正的高效能人士,专注.高效.高执行! 1.通知隐式推送 日 ...

  5. iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身

    iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新技术,主要为了解决用户下载 A ...

  6. iOS进阶开发-iOS性能优化-关东升-专题视频课程

    iOS进阶开发-iOS性能优化-3316人已学习 课程介绍         介绍了性能优化方法,其中包括内存优化.资源文件优化.延迟加载.持久化优化.使用可重用对象和并发访问等.这些内容都是非常重要的 ...

  7. iOS进阶课程-Passbook编程-关东升-专题视频课程

    iOS进阶课程-Passbook编程-1999人已学习 课程介绍         介绍了Passbook服务的重要性,Passbook服务的流程.还介绍了Pass风格.Pass内部结构.Pass创建. ...

  8. 视频教程-iOS进阶开发-iOS

    iOS进阶开发 毕业于解放军特种作战学院,曾就职广州军区司令部.复原后从事IT行业,涉及逆向,安全,密码学等技术领域.2014年在广州某线下教育机构担任iOS讲师,2015年加入潭州教育集团,潭州iO ...

  9. iOS进阶开发-李文瀚-专题视频课程

    iOS进阶开发-817人已学习 课程介绍         进阶课程涵盖目前iOS开发需要提升和深入研究的基础知识.通过原理讲解,深入理解底层机制.课程答疑讲师QQ:471926977 课程收益     ...

最新文章

  1. 只需5行代码,手把手教你快速实现图像分割,代码逐行详解!
  2. oracle时区参考表,ORACLE 时区
  3. BugKuCTF 加密 easy_crypto
  4. SQL中Truncate的用法
  5. GPU CUDA 经典入门指南
  6. linux自带磁盘加密工具下载,TrueCrypt(磁盘加密工具)
  7. VUE-PDF VUE的PDF预览组件
  8. 劲爆ORACLE优化,你不必是专家
  9. 【机器学习-西瓜书】三、线性回归;对数线性回归
  10. MongoDB:The Definitive Guide CHAPTER 2 Getting Started
  11. 2.windows-and-mac在控制台创建ASP.NET-Core应用程序
  12. 【ZT】可行性研究报告编写规范
  13. 海军装备、舰船电子设备|环境可靠性试验|GJB150A\GJB4
  14. Java加密:一、Base64算法
  15. 如何装计算机网络驱动,网卡驱动怎么安装,手把手教你电脑网卡驱动怎么安装...
  16. 【《Linus Torvalds自传-Linux OS 之父》摘录】
  17. QSystemTrayIcon退出后系统托盘图标不消失问题
  18. 当电脑电池只充到50%就不充电了
  19. 一些设计上的基本常识 - 梁飞
  20. 常用电气元件及其符号的标注

热门文章

  1. 【译】Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit
  2. RAFT 寻找一种易于理解的一致性算法(扩展版)
  3. AndroidL的checkPermission方法详解
  4. android permission权限与安全机制解析(上)
  5. 也来看看Android的ART运行时
  6. clickhouse数据手动迁移
  7. Sparkmllib scala KMEANS demo
  8. Android深入透析之常用设计模式经验谈
  9. php页面调用时间戳,php--------获取当前时间、时间戳
  10. JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林