文档章节

iOS Crash - 收集篇

H
 HeroHY
发布于 2017/07/11 15:27
字数 765
阅读 28
收藏 0

项目崩溃,crashLog可是你的救命稻草,能让你快速分析出bug的问题所在,不会收集可不行。
当然项目在开发时,可以通过控制台log看到调用堆栈,发布版的crash 收集一般有三种方式可选:

1.苹果Crash收集服务

通过iTunes Connect(Manage Your Applications - View Details - Crash Reports)获取用户的crash日志。在XCode 中Window->Organizer->Crashes也可以看到同样的crash日志,请看这篇文章:如何查看iOS已上架app崩溃分布、定位crash发生的行
但是 收集crash功能需要用户设置->隐私->诊断与用量->诊断与用量数据(iOS8一下在通用中设置) 选择自动发送,并与开发者共享即可;所以不推荐用。

2.自己实现应用内崩溃收集,并上传服务器

在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler)。UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用,这跟C,C++中的回调函数的概念是一样的。


获取到了崩溃日志,如何发送给开发者呢,目前一般有以下两种方式:
将崩溃信息持久化在本地,下次程序启动时,将崩溃信息作为日志发送给开发者。通过邮件发送给开发者。 不过此种方式需要得到用户的许可,因为iOS不能后台发送短信或者邮件,会弹出发送邮件的界面,只有用户点击了发送才可发送。

3.第三方收集crash

使用友盟、bugHD、Flurry 等第三方崩溃统计工具,原理都是根据系统产生的crash日志进行了一次提取或封装,然后将封装后的crash文件上传到对应的服务端进行解析处理。
优点是快速集成crash收集功能,有完善的后台管理界面和解析处理(crash文件是要解析后才能看懂的),好用还不要钱。
友盟崩溃统计官方文档 bugHD统计 Flurry

最后 恶意覆盖问题

崩溃收集统计函数应该只进行一次调用,如果用第三方的话也最好只用一个第三方,这样我们获取崩溃统计信息的途径也是唯一的。
第三方统计工具并不是用的越多越好,使用 多个崩溃收集第三方会导致NSSetUncaughtExceptionHandler()函数指针的恶意覆盖,现在很多第三方崩溃收集工具为了确保自己能最大可能的收集到崩溃信息,会对NSSetUncaughtExceptionHandler()函数指针的恶意覆盖。因为这个函数是将函数地址当做参数传递,所以只要重复调用就会被覆盖,这样就不能保证崩溃收集的稳定性。

© 著作权归作者所有

共有 人打赏支持
H
粉丝 3
博文 152
码字总数 77343
作品 0
海淀
私信 提问
获取iOS设备上崩溃日志(Crash Log)的方法

获取iOS设备上崩溃日志(Crash Log)的方法:http://www.weste.net/2013/5-20/91509.html iOS怎么分析AppStore上面的Crash Log:http://m.blog.csdn.net/blog/tianjf0514/45201549 iOS Cra......

智能小松鼠
2015/08/25
0
0
捕获系统异常崩溃的方法

1、使用PLCrashReporter框架 参考文章: http://www.cocoachina.com/ios/20150701/12301.html http://www.jianshu.com/p/930d7f77df6c...

xiaobai1315
2017/10/27
0
0
iOS仿抖音节拍界面、Swift,MVVM架构完整项目、日历demo、滚动切换分类等源码

iOS精选源码 在Object-C中学习数据结构与算法之排序算法(http://www.code4app.com/thread-14762-1-1.html) 日历-基本功能都有的日历 选择日期 上下月 动画(http://www.code4app.com/thread-3...

sunnyaigd
09/06
0
0
Android crash收集分析的工具包有哪些

之前做IOS端的时候一直用的是自带的crash收集分析工具,Android端好像没有自带的呀,有什么工具包可以推荐的吗?

Julylylyly
2016/04/29
259
0
NativeScript 3.3.0 发布,Native 跨平台应用

NativeScript 3.3.0 已发布,NativeScript 可以使用 Javascript,CSS, XML 创建真正的 Native 跨平台应用,支持 iOS Android,NativeScript 将跨平台代码翻译成目标平台的代码。 修复 (# 495...

王练
2017/10/26
1K
10

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
12分钟前
4
1
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
15
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
19
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
23
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部