天天看点

如何用X-code symbolicatecrash命令分析crash文件

有个项目提交到AppStore后被苹果打回来了,说程序运行的时候crash了,还给了我们三个crash文件,但是直接打开文件的话,我们看到的跟平时在Xcode中debug的时候完全不一样,debug的时候控制台打印的是一些函数名之类的.但是苹果给我们的crash文件里面的函数名之类的东西都变成16进制的.因此如果我们要想像平时在Xcode中一样获得一些有用的信息,我们就得做一些转化.

通过查阅官方文档和上网查阅.这里介绍利用Xcode隐藏的一个工具symbolicatecrash来完成转化

官方文档里说了,你如果想要完成转化,那么你必须同时拥有这几个文件: 

1. XXX.app  

2. XXX.app.dSYM 

3. XXX.crash

前两个文件是你打包时生成的文件,所以你要保存好这两个文件,否则,如果到时候苹果把你应用打回来了,给你crash文件,你也转化不了了.

如果你是通过设置run->release,然后直接command+B来生成app文件正式包的,那么直接进入项目中product下的app文件的文件夹中就能看见这两个文件.

如果你是通过archive然后export得到的ipa文件正式包,那么直接右击->打开方式->归档使用工具,打开报内容,就能找到这两个文件.

第三个文件就是苹果给你的crash文件.在桌面新建一个文件夹convertCrash把这个三个文件放到文件夹中

接下来进入此/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources文件夹,找到symbolicatecrash这个玩意,拷贝一份,粘贴到convertCrash文件夹中.现在文件夹中有四个文件前三个加symbolicatecrash.

接下来打开命令行,cd到convertCrash文件夹执行命令

./symbolicatecrash  /Users/hhhh/Desktop/convertCrash/XXXX.crash /Users/hhhh/Desktop/convertCrash/XXXX.app.dSYM > test.crash

回车后如果包如下错误:“Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 53.”则在当前命令行中直接输入

export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"回车然后再次执行./symbolicatecrash  /Users/hhhh/Desktop/convertCrash/XXXX.crash /Users/hhhh/Desktop/convertCrash/XXXX.app.dSYM > test.crash

此时文件夹中多了一个test.Crash文件,就是最终得到的文件