加入友盟統(tǒng)計(jì)功能后宰僧,友盟后臺會有一個(gè)錯(cuò)誤分析的統(tǒng)計(jì)項(xiàng)材彪,點(diǎn)進(jìn)去之后可以查看項(xiàng)目的錯(cuò)誤報(bào)告。對于開發(fā)人員來說撒桨,查看報(bào)告不是最終目的查刻,找到錯(cuò)誤的原因才是最終目的键兜。如何通過這堆報(bào)告定位到錯(cuò)誤的代碼呢凤类?早上查了好些資料,終于成功了普气。
我們先看一下錯(cuò)誤報(bào)告是什么樣的:
這份報(bào)告所包含的主要信息有:
1谜疤、首行是錯(cuò)誤的原因。顯而易見现诀,以上的錯(cuò)誤是由于數(shù)組越界了夷磕。
2、打紅色馬賽克的地方是你的工程名字仔沿。
3坐桩、紅色馬賽克之間有一個(gè)淡綠色的地址,這就是錯(cuò)誤代碼的位置封锉。
4绵跷、 dSYM UUID,這個(gè)是dSYM文件的唯一標(biāo)識。dSYM 是保存 16 進(jìn)制函數(shù)地址映射信息的中轉(zhuǎn)文件成福,我們調(diào)試的 symbols 都會包含在這個(gè)文件中碾局,并且每次編譯項(xiàng)目的時(shí)候都會生成一個(gè)新的 dSYM 文件。
5奴艾、CPU Type. 定位錯(cuò)誤的時(shí)候净当,我們也需要用到這個(gè)參數(shù)。
定位錯(cuò)誤代碼,我們需要將 xx.app 和 xx.app.dSYM 文件找出來.
1像啼、在Windows->Organizer->archivers可以看到你的每一次的打包俘闯。然后選擇你要查看的錯(cuò)誤報(bào)告所在的版本,這個(gè)一定要選對了埋合。
找到對應(yīng)的包后备徐,點(diǎn)擊右鍵,然后選擇Show in Finder的選項(xiàng)甚颂,查看這個(gè)包中的內(nèi)容蜜猾,如圖
再右鍵選擇顯示包內(nèi)容,這時(shí)我們看到 有dSYMs振诬,Products蹭睡,SCMBlueprint三個(gè)文件夾,我們需要用到的是前兩個(gè)文件夾
此時(shí)赶么,將這倆文件夾中最里層的文件都取出來肩豁,放到一個(gè)新的文件夾中
2.打開終端,cd到剛才新建的文件夾(錯(cuò)誤報(bào)告)的目錄下
輸入命令xcrun atos -arch arm64 -o xxxx.app/xxxx 0x10019bc48
其中 arm64是CPU Type辫呻;
xxxx對應(yīng)的是你的工程名清钥,也就是上文友盟錯(cuò)誤報(bào)告圖片中打紅色馬賽克的部分;
0x10019bc48 是錯(cuò)誤代碼的地址放闺,也就是上文友盟錯(cuò)誤報(bào)告圖片中淡綠色的那個(gè)內(nèi)存地址祟昭。
其中-[SubscribeViewController isSubcribeSuccess:] (in woshiPM) (SubscribeViewController.m:342)
就是錯(cuò)誤代碼的位置,在SubscribeViewController.m
中的isSubcribeSuccess
方法中怖侦,342是代碼所在的行數(shù)篡悟。
這樣就可以在你的工程中找到相應(yīng)的代碼去做修改了。