加入友盟統計功能后,友盟后臺會有一個錯誤分析的統計項,點進去之后可以查看項目的錯誤報告。對于開發人員來說,查看報告不是最終目的,找到錯誤的原因才是最終目的。如何通過這堆報告定位到錯誤的代碼呢?早上查了好些資料,終于成功了。
錯誤報告
這份報告所包含的主要信息有:
1、首行是錯誤的原因。顯而易見,以上的錯誤找不到方法。
2、打紅色馬賽克的地方是你的工程名字。
3、紅色馬賽克之間有一個淡綠色的地址,這就是錯誤代碼的位置。
4、 dSYM UUID,這個是dSYM文件的唯一標識。dSYM 是保存 16 進制函數地址映射信息的中轉文件,我們調試的 symbols 都會包含在這個文件中,并且每次編譯項目的時候都會生成一個新的 dSYM 文件。
5、CPU Type. 定位錯誤的時候,我們也需要用到這個參數。
定位錯誤代碼,我們需要將 xx.app 和 xx.app.dSYM 文件找出來.
1、在Windows->Organizer->archivers可以看到你的每一次的打包。然后選擇你要查看的錯誤報告所在的版本,這個一定要選對了。
找到對應的包后,點擊右鍵,然后選擇Show in Finder的選項,查看這個包中的內容,如圖
再右鍵選擇顯示包內容,這時我們看到 有dSYMs,Products,SCMBlueprint三個文件夾,我們需要用到的是前兩個文件夾
此時,將這倆文件夾中最里層的文件都取出來,放到一個新的文件夾中
2.打開終端,cd到剛才新建的文件夾(錯誤報告)的目錄下
輸入命令xcrun atos -arch arm64 -o xxxx.app/xxxx 0x10019bc48
其中 arm64是CPU Type;
xxxx對應的是你的工程名,也就是上文友盟錯誤報告圖片中打紅色馬賽克的部分;
0x10019bc48 是錯誤代碼的地址,也就是上文友盟錯誤報告圖片中淡綠色的那個內存地址。