关闭

iOS崩溃信息符号化

标签: ios
285人阅读 评论(0) 收藏 举报

iOS崩溃信息符号化

一、获取崩溃信息的方法

获取崩溃信息的方法主要有以下几种:

  1. 如果可以拿到崩溃的机器,将崩溃信息连击到Xcode, 找到device logs 就可以得到崩溃日志。
  2. 可以从苹果开发者网站中看到官方的崩溃上报,但是局限于用户允许上报。如果是苹果开发者,在新版本的Xcode中,可以直接获取到崩溃日志。
  3. 使用三方崩溃统计或者自己捕获崩溃信息,并上传到后台。
二、了解崩溃信息

随便在xcode里找到的一个崩溃log

我们可以从图中看到一些基本的信息如:使用设备的型号、崩溃的进程、版本号、架构、崩溃时间、崩溃类型、还有一大推我们不认识的十六进制的数。
这些信息足够多,足够丰富但是对于不是机器的我们来说,并没有什么意义,想要找到到底为什么崩溃了,我们得把这些信息转换成我们认识的类的名称、函数名称、代码行号。

三、崩溃信息的符号化

有了崩溃信息,我们还需要有对应崩溃版本Xcode 编译时产生的.app 文件和.dSYM文件。每次编译都会产生产生这些文件,我们可以在Xcode 的目录下找到。

符号化的方法主要有三种
1. 使用Xcode自动符号化
2. 使用 Symbolicatecrash 符号化,这是Xcode自带的分析工具。使用方法为 Symbolicatecrash + xx.crash + xx.dSYM + > + result.crash。 Symbolicatecrash 使用过程中可能有一些问题,网上有很多大神有详尽的解决办法,这里就不多说了。
3. 使用xcrun atos 符号化。这种工具的使用方法有很多,我只列出一种亲测可用的,方法为
xcrun atos -arch armv7s -o xxx.app/xxx -l 0xe2000 0x00110373
其中 armv7s为我们在崩溃信息中看到的架构,xxx.app为编译产生的.app文件 0xe2000 为崩溃线程中 + 号前面的地址 0x00110373 为 0xe2000 前边的地址。

其中前两种方法需要官方崩溃日志的格式,也就是说需要完整的.crash 文件,最后一种可以用于没有完整的崩溃日志时使用的方法。需要一行一行的符号化,会写脚本的可以写个脚本来完成一次性符号化。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2017次
    • 积分:115
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条