天天看點

iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包

有很多問題是在開發測試過程中無法遇到和重制的,這就需要統計線上的崩潰資訊進行定位。

什麼是 dSYM

Xcode編譯項目後,我們會看到一個同名的 dSYM 檔案,dSYM 是儲存 16 進制函數位址映射資訊的中轉檔案,我們調試的 symbols 都會包含在這個檔案中,并且每次編譯項目的時候都會生成一個新的 dSYM 檔案,位于 /Users/<使用者名>/Library/Developer/Xcode/Archives 目錄下,對于每一個釋出版本我們都很有必要儲存對應的 Archives 檔案

當我們軟體 release 模式打包或上線後,不會像我們在 Xcode 中那樣直覺的看到用崩潰的錯誤,這個時候我們就需要分析 crash report 檔案了,iOS 裝置中會有日志檔案儲存我們每個應用出錯的函數記憶體位址,通過 Xcode 的 Organizer 可以将 iOS 裝置中的 DeviceLog 導出成 crash 檔案,這個時候我們就可以通過出錯的函數位址去查詢 dSYM 檔案中程式對應的函數名和檔案名。大前提是我們需要有軟體版本對應的 dSYM 檔案,這也是為什麼我們很有必要儲存每個釋出版本的 Archives 檔案了。

友盟的崩潰資訊跟蹤

友盟的使用比較簡單,因為崩潰資訊中有提示的指令,前提是上線時是你本機的 Xcode 進行的上傳或導出工作,因為這樣才會有dSYM檔案。

首先打開友盟的崩潰統計,找到要定位的 bug,點選綠色的記憶體位址,就會彈出一個彈框,拷貝彈框中的指令

iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包

然後打開Mac指令行, 将拷貝的指令粘貼進去,按 return 鍵執行,如果解析成功的話,就會列印出崩潰資訊了,方法、檔案、行數等。

iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包

其他崩潰統計或不是自己打包

如果使用的是其他的崩潰統計服務或者當時并不是自己打包的,隻有崩潰資訊的記憶體位址,可以使用下面的辦法。

首先,找到當時archive的.xcarchive檔案。

如果是本機進行的archive,那麼在

/Users/username/Library/Developer/Xcode/Archives

目錄下會找到所有的archive檔案,該目錄是預設的存放目錄,如果這是公司的辦公本,并且你沒有在該目錄下找到最近的檔案,則有可能是 Xcode 的設定被更改了。

打開 Xcode 首選項,選擇最右側的 locations,就可以看到 Xcode 的相關檔案存放路徑,點選箭頭即可打開檔案位置。

iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包

如果并不是本機進行的 archive,那麼找到當時的電腦或則從同僚那裡拷貝到archive也是可以的。

好的,archive檔案已經找到,下面就可以進行定位了。

右鍵archive檔案 選擇 顯示包内容,然後選擇 dSYMs 檔案夾裡的.dSYM 檔案再次顯示包内容,然後會找到一個 DWARF 的檔案夾,保持該 Finder 視窗打開

iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包
iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包
iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包

第三步,打開終端,先輸入 cd,然後選中将DWARF檔案夾拖到終端視窗上,會看到 cd 後面自動加上了DWARF檔案夾的路徑,按 return 鍵進入該目錄下

最後在終端裡輸入如下指令

atos -arch arm64 -o Xcode 項目名稱 記憶體位址
例如
atos -arch arm64 -o  test-IOS 
           

按 return 鍵執行就會列印出該記憶體位址的具體檔案、方法以及行數等資訊,找到崩潰的位置就知道可能的原因以及解決方法了!

iOS友盟崩潰位址解析 通過dSYM檔案分析定位線上 APP crash問題什麼是 dSYM友盟的崩潰資訊跟蹤其他崩潰統計或不是自己打包