一、崩溃类型
1. 应用存在的bug,即出现Objective-C的崩溃
比如数组越界、selector方法没有实现等,系统抛出一个NSException
这种情形可以通过系统的API注册UncaughtNSException处理函数捕捉,定位修复比较容易
2. 应用违反系统规则而出现错误
比如Watchdog超时、用户强制退出、低内存终止等,系统抛出unix信号
这种情形可以通过注册信号处理函数捕捉
二、崩溃问题分析与处理方法
1. 开发阶段
(1) 开发人员直接可以debug调试验证
(2) 测试人员测试时出现的crash,一方面提供浮现场景,开发人员浮现验证;另一方面直接查看测试设备的崩溃日志。(连接设备,打开Xcode - Window - Organizer,在左侧面板中选择Device Logs(可以选择具体设备的Device Logs或者Library下所有设备的Device Logs),然后根据时间排序查看设备上的crash日志)
2. 发布阶段
(1) 用户反馈,开发人员浮现场景调试验证
(2) 用户反馈,提供设备崩溃日志给开发人员
(3) iTuns Connect服务提供CrashReport日志
考虑到并不是所有iPhone用户都允许自动发送诊断报告(crash日志),而且对于部分提交到Apple得crash日志,开发者还需要手动去拉取,然后找到对应的符号文件进行解析——这是一件很繁琐的事情。所以实际项目开发中,通常接入现有的crash收集工具,或者自己编写一个进行自动化收集、解析和统计汇总,比如腾讯的bugly系统。
本文详细介绍了iOS应用在开发和发布阶段遇到的崩溃类型,包括应用内部bug导致的NSException和违反系统规则引发的错误,并提供了相应的分析与处理方法。通过连接设备查看崩溃日志、使用现有crash收集工具等方式,帮助开发者高效定位和解决问题。
1644

被折叠的 条评论
为什么被折叠?



