对Crash文件,dSYM文件进行符号化

今天对iOS 的crash文件dSYM文件符号化研究了一下,参考网上的文章实际操作了一把,也走了一些弯路,把我的操作流程简单介绍一下.

获取测试机的crash log

通过Xcode获取到崩溃日志,方法是Xcode->Window->Devices

对Crash文件,dSYM文件进行符号化_第1张图片

看到demo RunLoop 的crash信息,右键选中导出文件到指定文件夹方便下一步操作

获取dSYM文件

我们每次Archive一个包之后,都会随之生成一个dSYM文件。每次发布一个版本,我们都需要备份这个文件,以方便以后的调试

对Crash文件,dSYM文件进行符号化_第2张图片

Xcode->Window->Organizer->右键选中show in Finder-> xcarchive显示包内容->xxx.app.dSYM (xxx 工程名)

符号化

通过Mac自带的命令行工具解析Crash文件需要具备三个文件

1.symbolicatecrash,Xcode自带的崩溃分析工具,使用这个工具可以更精确的定位崩溃所在的位置,将0x开头的地址替换为响应的代码和具体行数。

获取symbolicatecrash工具

打开终端输入以下命令:

find /Applications/Xcode.app -name symbolicatecrash -type f

我找到的路径是:

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

根据路径前往文件夹找到symbolicatecrash ,将其复制到刚才指定文件夹

2.我们打包时产生的dSYM文件。
3.崩溃时产生的Crash文件,例如:*.crash。

我在解析崩溃信息的时候,首先在桌面上建立一个Crash文件夹,然后将.Crash、.dSYM、symbolicatecrash放在这个文件夹中,这样进入这个文件夹下,直接一行命令就解决了。

对Crash文件,dSYM文件进行符号化_第3张图片
屏幕快照 2017-03-29 上午12.09.55.png

核对uuid是否一致

如何将文件一一对应

每一个 xx.app 和 xx.app.dSYM 文件都有对应的 UUID,crash 文件也有自己的 UUID,只要这三个文件的 UUID 一致,我们就可以通过他们解析出正确的错误函数信息了。

1.查看 xx.app 文件的 UUID,terminal 中输入命令 :

dwarfdump --uuid xx.app/xx (xx代表你的项目名)

2.查看 xx.app.dSYM 文件的 UUID ,在 terminal 中输入命令:
dwarfdump --uuid xx.app.dSYM

3.crash 文件内 Binary Images: 下面一行中 <> 内的 e86bcc8875b230279c962186b80b466d 就是该 crash 文件的 UUID,而第一个地址 0x1000ac000 便是 slide address:
Binary Images:
0x1000ac000 - 0x100c13fff Example arm64 /var/containers/Bundle/Application/99EE

d12fa3e6cf7fd990b59c00afe7ffca04.jpg
对Crash文件,dSYM文件进行符号化_第4张图片
2c467ec04b3cb562673efe149e0fb828.jpg

准备工作完成,开始符号化操作

  1. 打开终端,cd到当前crash文件夹,输入命令
    ./symbolicatecrash RunLoop.crash RunLoop.app.dSYM > jieguo.crash

如果报错 Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69. 需要 执行命令
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
然后重新 输入命令
./symbolicatecrash RunLoop.crash RunLoop.app.dSYM > jieguo.crash
这样就看到一个名字jieguo.crash 已经符号化的文件了

参考资料
命令行工具解析Crash文件,dSYM文件进行符号化
iOS调试之 crash log分析
符号化iOS Crash文件的3种方法
iOS Crash文件分析
iOS崩溃调试技巧

你可能感兴趣的:(对Crash文件,dSYM文件进行符号化)