分类
一般来说,iOS 应用的崩溃分为几种
1.应用 bug 崩溃,出现 Object-C 的崩溃
如数组越界,selector 方法没有实现,这时候系统会抛出 NSException 的异常和堆栈使用情况,这时候比较容易定位出错位置。可以通过注册系统 API UncaughtNSException 处理函数进行捕捉
2.应用违反系统规则
如 WatchDog 超时,用户强制退出,低内存终止,这时候系统会发出 unix 信号,可以通过注册信号处理函数进行捕捉且只能捕捉有限的几个信号,定位相对较难。
处理方法
1.传统方法
开发期间,通过打断点,log 等形式进行处理,测试人员也可以用崩溃日志进行反馈分析
2.发布以后
可以使用一些软件捕捉这些崩溃
iOS 符号表 dSYM 文件
符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:
<起始地址> <结束地址> <函数> [<文件名: 行号>],存放在 dSYM 文件中, dSYM 文件与 .app 文件存放在一起,我们可以编译完成以后在 Xcode Product 中找到 .app 然后右键打开文件夹,找到该文件。
假如我们想根据出错时的堆栈信息转换为函数信息,那么就必须借助 dSYM 文件。
暂时不清楚怎么实际的根据符号表转换函数。。但是可以借助第三方的软件,我们项目使用了 Bugly 提供的工具,提取出符号表,然后上传到网站就可以完成。