好久没写博客了,真的不是忙没有时间。就是懒!闲话少说,言归正传。事件起因,群里一个朋友说自己的app被拒了,苹果给的被拒原因是AppStore审核指南条例2.1,说是app存在崩溃。还附带上了Crash日志文件。看了一眼Crash日志文件,彻底懵了!


What?(此处略过一句脏话)

一、查看Crash日志文件信息

看到这种东西,我第一反应就是跑去看官方文档

  • Incident Identifier:crash报告的唯一标识符。
  • CrashReporter Key:每台设备的匿名标识符。
  • Hardware Model:crash产生的设备类型
  • OS Version:设备操作系统版本
  • Exception Type:crash异常类型
  • Exception Codes:crash异常错误码
  • Exception Note:crash异常附加信息
  • Triggered by Thread:异常产生的线程。
  • Last Exception Backtrace:最后的异常回溯

然并卵,有了这些信息还是看不懂啊!难道是打开方式不对?

二、开始分析

我们可以用Xcode自带的symbolicatecrash工具分析.crash文件

1、找到Xcode自带的symbolicatecrash工具路径:

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

2、找到苹果公司反馈的crash日志文件(我这里只有一个链接,我直接把链接里面的crash日志内容保存成了一个.crash文件“XX.crash”)

3、找到崩溃app对应的dSYM文件。(别人直接发了崩溃app的xcarchive文件给我,.dSYM文件就在xcarchive文件的dSYMs文件夹下的“XX.app.dSYM”)

4、在终端执行以下命令:

1
2

symbolicatecrash路径 XX.crash(苹果公司给的crash日志文件路径) XX.app.dSYM(崩溃app对应的dSYM文件路径) > 输出文件路径

如果在执行命令的过程中会出现错误信息:“Error: “DEVELOPER_DIR” is not defined at /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash line 69.”

解决方案:

在终端执行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

执行完成后,再执行第4步。

第4步执行具体过程如下图所示:

三、分析结果

经过以上4步之后,我们可以在打开桌面上生成的crash文件(我的输出路径是”~/desktop/exam.crash”)。

这样是不是思路就清晰了很多?接下来定位bug就看你的了!

本文内容中部分参考网络资料,后续会不断更新完善。欢迎一起学习交流!

四、参考文章地址: