在常规的的log日志下能分析很多crash,那么问题来了。分发测试或者上线了的包怎么抓取和分析crash。常规的解决方案,假如测试人员在身边可以在崩溃后连接电脑 打开Xcode 选择Window->Devices 选择你的iphone,进行查看崩溃日志。上线的或者手机不在身边的可以选择用友盟统计获取崩溃信息。以下是我解析崩溃日志的一些经验,用于准确定位崩溃点。
从crash1图可以从堆栈信息定位出崩溃的函数
然而像crash2这样的不能准确定位数组越界的函数就需要通过dSYM文件分析定位了。
请关注其中一行信息
它指出了应用名称,崩溃时的调用方法的地址,文件的地址以及方法所在的行的位置(具体请看这篇文章),接下来就要符号化(Symbolication)这句,用dwarfdump来检测crash log中dSYM UUID和本地的dSYM文件是否匹配
打开终端找到你打包的Xcode路径下的dSYM
找到crash log中的dSYM UUID与本地的dYSM相匹配的文件
命令 dwarfdump -- uuid appName.app.dSYM(uuid 后面是相对路径 若此时你不是在dSYMsl路径下需补全为绝对路径)
从log日志中找到对应的 CPU Type: arm64 执行分析命令
dwarfdump --arch=armv7 --lookup 0x10009e424
命令后面也是相对路径(非当前路径下需替换为绝对路径)
下面看下分析结果
AT_name、Line table dir :、Line table file 能准确定位路径、文件、行数、方法
注意:如果发现warning: unsupported file type:错误,这个问题是因为有文件或者目录的名称中包含空格,比如:2016-08-17/appname 8-17 6.19 ,所以,需要转义一下:2016-08-17/appname\ 8-17\ 6.19\ PM.xcarchive
好了先到这了,该睡了-