iOS crash文件符号化

问题来源

作为一名iOS开发者,我们想App Store提交版本时,经常会遇到本地测试没有问题,但是审核闪退的情景。然而,当我们拿到Apple的crash文件时,我们是从这些堆栈信息直接看出问题在哪里的,这个时候就需要将crash文件符号化。如下:
Apple给出的崩溃日志

需要的四个文件

1、.dSYM文件、.app文件

Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件,对于每一个发布版本我们都很有必要保存对应的 Archives 文件
获取.dSYM文件、.app文件
在Xcode界面点出window-->Organizer


找到对应版本,showinfind 进去目录,找到对应的文件——>显示包内容


在这两个文件夹下面有我们需要的两个文件:.dSYM文件、.app文件

2、 Symbolicatecrash工具

  • Symbolicatecrash是Xcode自带的一个分析工具,可以通过机器上的崩溃日志和应用的.dSYM文件定位发生崩溃的位置,把crash日志中的地址替换成代码相应位置。
  • Symbolicatecrash是Xcode上一个独立的工具,你打开终端是运行不了他的,因为环境变量没有配置,无法全局使用,所以现在只能先把这个工具在MAC上找到,然后拷贝出来,和.dSYM文件和Crash文件放在一起,然后再使用此工具。

获取路径:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

3、crash文件

在apple 解决方案中心



将上述4个文件统一复制到桌面,放到一个文件夹下面,我们暂且定为crash文件夹。

使用终端开始解析

  • 1、进去目录文件下
cd 到crash目录下面
  • 2、使用命令
./symbolicatecrash ./*.txt ./*.dSYM > crash.log

如果报错,那么再输入如下命令:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

之后,再次输入./symbolicatecrash ./*.txt ./*.dSYM > crash.log命令,此时生成了可以清楚定位问题所在的文件,如下:

你可能感兴趣的:(iOS crash文件符号化)