ios中dsYM

什么是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文件夹

ios中dsYM_第1张图片

右键——显示包内容

ios中dsYM_第2张图片


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

2. 查看archive包的UUID

Archives界面选择对应的包,右键Show in Finder

ios中dsYM_第3张图片


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

ios中dsYM_第4张图片
ios中dsYM_第5张图片

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

一些问题

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

ios中dsYM_第6张图片

你可能感兴趣的:(ios中dsYM)