iOS导出与符号化崩溃日志

iOS符号化崩溃日志

经常(偶尔)QA在测试的时候,APP发生了crash,此时相比APP的崩溃,更加崩溃的是开发。如果是必现的还好,但如果是偶现的话,此时就必须设法恢复现场,找到崩溃原因。

崩溃日志导出

恢复现场第一步是导出崩溃日志,导出日志的方式有两种。一种是通过Xcode导出,另外则是直接通过设备的Settings导出。

通过Xcode导出崩溃日志

直接用发生崩溃的设备连接Xcode,点击Xcode -> Window -> Devices,然后定位到发生崩溃的机器,找到对应的崩溃日志,并导出到Mac的文件系统。

iOS导出与符号化崩溃日志_第1张图片
Xcode中导出崩溃日志

通过设备Settings(设置)APP查看并导出崩溃日志

通过Settings导出崩溃日志,不同版本的系统可能不同,以iOS 12为例,崩溃日志位于Settings -> Privacy -> Analytic -> AnalyticsData 下,日志名格式为AppName-XXXX-XX-XX.ips,可以根据崩溃时间点和发生崩溃的APP名称来定位,点击对应的崩溃日志,可以进入查看,然后通过导航栏的分享按钮通过AirDrop传送到Mac。

iOS导出与符号化崩溃日志_第2张图片
通过设备导出崩溃日志

崩溃日志符号化

第二步是找到发生崩溃的测试包对应的dSYMs文件,这个要求每次打包以后要保存对应的dSYMs文件,否则没办法了。其次,很重要的一点,Xcode中必须要有对应版本系统的iOS DeviceSupport文件,否则符号化会失败。

举个例子:比如发生崩溃的iPhone系统是iOS 8.1.1,那么路径/Users/username/Library/Developer/Xcode/iOS DeviceSupport/路径下也要有iOS 8.1.1的设备支持文件。

将崩溃日志和dSYMs文件放到同一个目录下,然后采用symbolicatecrash命令进行符号化。symbolicatecrash是Xcode自带的符号化工具,但是不在系统的PATH内,因此运行该命令需要修改PATH变量,在终端执行如下命令:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
export PATH=$PATH:/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/

然后在终端中执行如下命令:

symbolicatecrash XXX.crash -o YYY.crash

其中XXX.crash是未符号化的日志,YYY.crash是符号化后的日志。

你可能感兴趣的:(iOS导出与符号化崩溃日志)