沒有不會crash的app包括微信
沒有不會crash的程式碼即使正常執行千年
只要有會看crash的程式猿
這一週是在不同的crash日誌分析中度過的,公司的4個專案依次出現不同程式的隨機崩潰。並且出現了非常多的靈異事件,即使看到了現象程式猿(!_! ME)也很難相信這是真的(想逃避)。當赤裸裸的現象一次又一次出現,直接導致手心出汗,精神失常(對於10年開發的我是致命的羞辱)。拿出斧頭開始啃著“天外來客”。
考慮篇幅和閱讀時長的習慣,在此略過以下內容:
- crash檔案採集的具體步驟。
- crash檔案中內容的含義解釋。
- crash檔案中崩潰種類的說明。
- dsym檔案的來源和作用。
- crash中崩潰地址的手動解析的方法。
- 等等可以百度的內容。
記錄下怎麼圖形化一步還原崩潰地址為可讀程式碼的方法。
一、 Xcode還原法
最簡單的方法是,提交app到app store的時候使用Xcode直接提交併且勾選上傳dsym。如圖
之後每週來檢視一次崩潰日誌 Xcode已經直接圖形化崩潰日誌,並且有完整的呼叫棧。 **注意:**將程式碼回退到上傳時的分支和相同commit處,不然指向的程式碼行錯誤。 DONE二、 友盟還原法
1. 檢視崩潰
使用友盟統計的功能也包含crash的採集,並且crash日誌會在app重啟後立刻上傳,時效性較好。
檢視到形形色色的crash資訊,建議升級到友盟最新版本,使得采集資訊更加的準確。 檢視一個崩潰詳情,可以檢視崩潰的呼叫棧,但是涉及到APP相關的,顯示的只是64位的地址內容而不是方法名和行數。2. 檢視dsym檔案
需要上傳崩潰檔案對應的dsym,此時需要先檢視崩潰日誌對應的UUID
根據UUID查詢dsym檔案,如果沒有使用bitcode那麼直接在archive資料夾中可以找到。應該沒有不用bitcode的吧,誰用誰知道它的好。 開啟了bitcode那麼需要到App Store Connect下載 下載後看到一堆的dSYM檔案,檔名前面的一段就是UUID。 此時UUID和對應的dSYM都有了。3. 上傳dsym檔案
到友盟iOS專案,選擇"應用設定"後,選著左邊的“符號表管理”,再點選“上傳符號表檔案”
選擇指定的版本號後上傳,上傳成功後會顯示解析完成。4. 檢視符號的崩潰呼叫棧
已經完美的完成解析了。如果你找到了對的dSYM檔案的話,不然就SO SO SO (無能為力)
可以很輕鬆的找到崩潰的地方,然後慢慢修改吧。 並且反省下為何為崩潰。DONE
三、 SYM工具還原法
推薦dSYM的解析工具 SYM. 此方法針對從裝置上獲取crash檔案後解析,使用非常給力。
1. 裝置獲取crash檔案
連線裝置到電腦後,開啟Xcode選擇Window下Devices and Simulators
在當前裝置,可以看到裝置上所有的崩潰,你應該知道自己app的名稱吧。 ^_^ 將崩潰日誌全部選中,然後複製。2. 查詢UUID
在崩潰日誌中搜尋“Binary Images”,會看到app的名稱,旁邊的就是UUID了。
3. SYM分析
開啟SYM app後,(1)將崩潰日誌複製到內容中。(2)選擇UUID對應的dSYM檔案。 (3)點選執行按鈕。
檢視紅色的就是解析完成的,並且準確無誤。GOOD。
後記
可能你沒看懂,沒關係請多看幾遍。 如果對crash還是沒了解,沒關係再百度下。 也許你會推薦“DSYMTools”這個工具,我也一直用了5年,一直都很好用。只是最近分析出的內容不準確。所以建議你試試我介紹的方法。 另外再強調一點使用第三方庫請慎重。
補充一句
Android在友盟上也一樣可以進行崩潰地址的解析,同樣上傳mapping檔案就可以實現。
// END 2018-11-30 每天進步一點點