前言:在iOS开发中我们经常会有分析.crash文件的需求,这篇文章简单记录一下用symbolicatecrash分析.crash文件的过程
用一张图说明问题,就是拿到crash文件找到了出错位置确不知道对应的代码中什么位置
前期准备: 1.用解压软件打开你的IPA包,把
Payload
中的文件复制到crash文件同一目录下。2.将对应.dSYM文件
也复制到这个目录。(该文件一般在/Users/name/Library/Developer/Xcode/DerivedData/MyApp-*******/Build/Products
) 前提是你必须在打包或build的时候开启了选项.dSYM
,恭喜你,你的解析工作已经提前结束啦
要想解析成功还有一个充要条件: .dSYM 文件
与.crash文件
与你的项目包(Payload
下)三者UUID 必须能对应起来. 查看UUID命令
dwarfdump --uuid Mydsym.app.dSYM
.crash文件
中的UUID在下面所示:
** 开始解析:** 1.打开你的终端,输入以下命令回车:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
2.找到你的解析工具symbolicatecrash
所在位置,Xcode7.3.1
在/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
.
然后按照格式:symbolicatecrash .crash文件 .dSYM文件 >result.log
拼装命令,执行即可获得解析结果result.log
命令示例:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Download/log/test.crash youApp.dSYM >result.log
解析之后打开result.log你就会看到类似下图,代码中崩溃的位置已经可以看到啦
补充: 在本机查找.dsym文件可以用 mdfind "com_apple_xcode_dsym_uuids == E6EDBC19-62B2-3A56-8971-547213966DD5"
命令,替换相应的UUID即可~
EOF:有任何问题可以留言交流,方法很简单,但还是记录下预防自己健忘痴呆~