什么是dsYM?
dSYM是保存16进制函数地址映射信息的中转文件,我们调试的symbols都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的dSYM文件,位于/Users/<用户名>/Library/Developer/Xcode/Archives目录下
dsYM文件有什么用?
当我们软件release模式打包或上线后,不会像我们在Xcode中那样直观的看到用崩溃的错误,这个时候我们就需要分析crash report文件了,iOS设备中会有日志文件保存我们每个应用出错的函数内存地址,通过Xcode的Organizer可以将iOS设备中的DeviceLog导出成crash文件,这个时候我们就可以通过出错的函数地址去查询dSYM文件中程序对应的函数名和文件名。大前提是我们需要有软件版本对应的dSYM文件,这也是为什么我们很有必要保存每个发布版本的Archives文件了。
每一个xx.app和xx.app.dSYM文件都有对应的UUID,crash文件也有自己的UUID,只要这三个文件的UUID一致,我们就可以通过他们解析出正确的错误函数信息了。
如何对比UUID是否一致?
1. 查看IPA包的UUID
解压缩IPA包——进入Payload文件夹

右键——显示包内容

使用命令:dwarfdump --uuid xx.app/xx(xx代表你的项目名)

2. 查看archive包的UUID
Archives界面选择对应的包,右键Show in Finder

右键显示包内容——打开dsYMs文件夹


使用命令dwarfdump --uuid xxx.app.dSYM(xxx为你的项目名)

一些问题
1.企业打包xxx.app.dsYM的UUID与ipa包中的UUID总是不一致解决办法:XCode9.2 Archive时去掉Rebuild from Bitcode勾选

网友评论