什么是dsYM?
????????dSYM是保存16進(jìn)制函數(shù)地址映射信息的中轉(zhuǎn)文件戳鹅,我們調(diào)試的symbols都會(huì)包含在這個(gè)文件中蝌麸,并且每次編譯項(xiàng)目的時(shí)候都會(huì)生成一個(gè)新的dSYM文件双仍,位于/Users/<用戶名>/Library/Developer/Xcode/Archives目錄下
dsYM文件有什么用晾咪?
????????當(dāng)我們軟件release模式打包或上線后碟嘴,不會(huì)像我們?cè)赬code中那樣直觀的看到用崩潰的錯(cuò)誤的圆,這個(gè)時(shí)候我們就需要分析crash report文件了鼓拧,iOS設(shè)備中會(huì)有日志文件保存我們每個(gè)應(yīng)用出錯(cuò)的函數(shù)內(nèi)存地址,通過(guò)Xcode的Organizer可以將iOS設(shè)備中的DeviceLog導(dǎo)出成crash文件越妈,這個(gè)時(shí)候我們就可以通過(guò)出錯(cuò)的函數(shù)地址去查詢dSYM文件中程序?qū)?yīng)的函數(shù)名和文件名季俩。大前提是我們需要有軟件版本對(duì)應(yīng)的dSYM文件,這也是為什么我們很有必要保存每個(gè)發(fā)布版本的Archives文件了梅掠。
????????每一個(gè)xx.app和xx.app.dSYM文件都有對(duì)應(yīng)的UUID酌住,crash文件也有自己的UUID店归,只要這三個(gè)文件的UUID一致,我們就可以通過(guò)他們解析出正確的錯(cuò)誤函數(shù)信息了酪我。
如何對(duì)比UUID是否一致消痛?
1. 查看IPA包的UUID
????解壓縮IPA包——進(jìn)入Payload文件夾
右鍵——顯示包內(nèi)容
使用命令:dwarfdump --uuid xx.app/xx(xx代表你的項(xiàng)目名)
2. 查看archive包的UUID
Archives界面選擇對(duì)應(yīng)的包,右鍵Show in Finder
右鍵顯示包內(nèi)容——打開dsYMs文件夾
使用命令dwarfdump --uuid xxx.app.dSYM(xxx為你的項(xiàng)目名)
一些問(wèn)題
1.企業(yè)打包xxx.app.dsYM的UUID與ipa包中的UUID總是不一致解決辦法:XCode9.2 Archive時(shí)去掉Rebuild from Bitcode勾選