最近公司上线App居然被拒了,审核团队给的拒绝原因很简单,直接甩给我三个crashlog文档,下载下来打开看一脸懵逼,这咋看?由于是第一次遇到,找了找文档学习,在这里整理下:

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_iOS 崩溃堆栈教程

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_日志文件_02


iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_iOS审核解析崩溃日志_03

正题:

要分析奔溃日志需要三个文件:crash日志,symbolicatecrash分析工具,.dSYM符号集
1、在桌面上创建一个crash文件夹
2、获取崩溃日志,并将crash日志进行保存

将崩溃日志文件放入到桌面的crash文件夹中(如果不是审核被拒返回的崩溃日志文件,可以通过位置:Xcode->window->Devices and Simulators ->选中测试手机,点击views Devices Logs,根据时间点找到你的崩溃日志,右键Export 到桌面 ‘后缀名为默认 .crash, 可任意命名’,再将这个crash文件放入桌面的crash文件夹)

3、找到Xcode的位置,右键"显示包内容",根据以下目录找到symbolicatecrash工具, 获取路径

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_iOS 崩溃堆栈教程_04

4、可以看到目前我们已经在桌面crash文件夹中有‘崩溃日志’和‘symbolicatecrash’解析工具,接下来我们获取dYSMs文件:

a. 打开Xcode,选择Window–>Orgianzer找到对应的Archive文件

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_崩溃日志_05


b. 点击右边的Download dSYMS


iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_崩溃日志_06


c. 如果提示 No dSYMs were found for Version xxx Build xxx


iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_日志文件_07

d. 可以右键点击对应的Archive文件,show in finder,然后右键显示包内容,找到dSYMs文件夹下的对应dYSMs文件,拷贝到刚才的文件夹下

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_iOS审核解析崩溃日志_08

e .如果文件夹为空,那么就要去检查Xcode设置,在Xcode --> Build Setting 搜索 “debug information format”,将"DWARF"修改为"DWARF with dSYM File",之后重新打包就可以找到了

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_iOS审核解析崩溃日志_09

5. 打开终端,进入刚才的文件夹(cd 你自己的刚才创建的文件夹路径)

cd /Users/xxx/desktop/crash

6. 接着输入以下命令

/symbolicatecrash ./crash.txt ./MyAppName.app.dSYM > crash.log 注:crash.txt为苹果返回的崩溃日志的名字,MyAppName.app.dSYM为你自己拷出来的dSYM文件的名字,crash.log为你要输入的日志文件的名字

执行命令之前的crash文件夹内(上面三个txt格式的为苹果返回的崩溃日志文件)

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_崩溃日志_10


如果提示"DEVELOPER_DIR" is not defined at xxxxxxxxxxxxxx,那么输入以下命令,如果没有则跳过:

1、临时方法:配置环境变量 DEVELOPER_DIR
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
2、永久方法:编辑~/.bash_profile,在末尾添加 #Add environment variable DEVELOPER_DIR
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developerexport PATH=iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_iOS 崩溃堆栈教程_11PATH
然后保存文件,使用source ~/.bash_profile命令或者完全退出终端来刷新环境变量

7. 然后重新输入第6步的命令:/symbolicatecrash ./crash.txt ./MyAppName.app.dSYM > crash.log 。执行命令之后(.crash文件为生成的日志文件)

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_日志文件_12

8、点击打开crash文件夹中的.log文件,就一目了然崩溃的原因了

iOS 崩溃堆栈教程 ios崩溃日志在哪个文件夹_iOS 崩溃堆栈教程_13


具体出错原因分析,可以看看我的下一篇文章,真的是很尴尬!!