dSYM文件分析
什么是 dSYM 文件
Xcode編譯項目后,我們會看到一個同名的 dSYM 文件,dSYM 是保存 16 進制函數(shù)地址映射信息的中轉(zhuǎn)文件,我們調(diào)試的 symbols 都會包含在這個文件中,并且每次編譯項目的時候都會生成一個新的 dSYM 文件,位于 /Users/<用戶名>/Library/Developer/Xcode/Archives 目錄下,對于每一個發(fā)布版本我們都很有必要保存對應的 Archives 文件 (AUTOMATICALLY SAVE THE DSYM FILES?這篇文章介紹了通過腳本每次編譯后都自動保存 dSYM 文件)。
dSYM 文件有什么作用
當我們軟件 release 模式打包或上線后,不會像我們在 Xcode 中那樣直觀的看到用崩潰的錯誤,這個時候我們就需要分析 crash report 文件了,iOS 設備中會有日志文件保存我們每個應用出錯的函數(shù)內(nèi)存地址,通過 Xcode 的 Organizer 可以將 iOS 設備中的 DeviceLog 導出成 crash 文件,這個時候我們就可以通過出錯的函數(shù)地址去查詢 dSYM 文件中程序?qū)暮瘮?shù)名和文件名。大前提是我們需要有軟件版本對應的 dSYM 文件,這也是為什么我們很有必要保存每個發(fā)布版本的 Archives 文件了。
如何將文件一一對應
每一個 xx.app 和 xx.app.dSYM 文件都有對應的 UUID,crash 文件也有自己的 UUID,只要這三個文件的 UUID 一致,我們就可以通過他們解析出正確的錯誤函數(shù)信息了。
1.查看 xx.app 文件的 UUID,terminal 中輸入命令 :
dwarfdump --uuid xx.app/xx (xx代表你的項目名)
2.查看 xx.app.dSYM 文件的 UUID ,在 terminal 中輸入命令:
dwarfdump --uuid xx.app.dSYM?
3.crash 文件內(nèi)第一行 Incident Identifier 就是該 crash 文件的 UUID。
dSYM工具
于是我抽了幾個小時的時間將這些命令封裝到一個應用中,也為以后解決bug提供了便利。
使用步驟:
1.將打包發(fā)布軟件時的xcarchive文件拖入軟件窗口內(nèi)的任意位置(支持多個文件同時拖入,注意:文件名不要包含空格)
2.選中任意一個版本的xcarchive文件,右邊會列出該xcarchive文件支持的CPU類型,選中錯誤對應的CPU類型。
3.對比錯誤給出的UUID和工具界面中給出的UUID是否一致。
4.將錯誤地址輸入工具的文本框中,點擊分析。
Mac app下載地址??項目源碼地址
轉(zhuǎn)載于:https://www.cnblogs.com/quansir/p/5539682.html
總結(jié)
- 上一篇: 内存一致性模型
- 下一篇: swift 闭包的使用