加入友盟統(tǒng)計(jì)功能后赠橙,友盟后臺(tái)會(huì)有一個(gè)錯(cuò)誤分析的統(tǒng)計(jì)項(xiàng),點(diǎn)進(jìn)去之后可以查看項(xiàng)目的錯(cuò)誤報(bào)告凯砍。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),查看報(bào)告不是最終目的掰吕,找到錯(cuò)誤的原因才是最終目的果覆。如何通過(guò)這堆報(bào)告定位到錯(cuò)誤的代碼呢?早上查了好些資料殖熟,終于成功了局待。
我們先看一下錯(cuò)誤報(bào)告是什么樣的:
友盟錯(cuò)誤報(bào)告
這份報(bào)告所包含的主要信息有:
1、首行是錯(cuò)誤的原因菱属。顯而易見(jiàn)钳榨,以上的錯(cuò)誤是由于數(shù)組越界了。
2纽门、打紅色馬賽克的地方是你的工程名字薛耻。
3、紅色馬賽克之間有一個(gè)淡綠色的地址赏陵,這就是錯(cuò)誤代碼的位置饼齿。
4、 dSYM UUID,這個(gè)是dSYM文件的唯一標(biāo)識(shí)蝙搔。dSYM 是保存 16 進(jìn)制函數(shù)地址映射信息的中轉(zhuǎn)文件缕溉,我們調(diào)試的 symbols 都會(huì)包含在這個(gè)文件中,并且每次編譯項(xiàng)目的時(shí)候都會(huì)生成一個(gè)新的 dSYM 文件吃型。
5证鸥、CPU Type. 定位錯(cuò)誤的時(shí)候,我們也需要用到這個(gè)參數(shù)勤晚。
定位錯(cuò)誤代碼枉层,我們需要將 xx.app 和 xx.app.dSYM 文件找出來(lái).
1、在Windows->Organizer->archivers可以看到你的每一次的打包赐写。然后選擇你要查看的錯(cuò)誤報(bào)告所在的版本鸟蜡,這個(gè)一定要選對(duì)了。
查找所有的archivers包
選擇你的錯(cuò)誤報(bào)告所對(duì)應(yīng)的包
找到對(duì)應(yīng)的包后挺邀,點(diǎn)擊右鍵揉忘,然后選擇Show in Finder的選項(xiàng),查看這個(gè)包中的內(nèi)容悠夯,如圖
archivers包
再右鍵選擇顯示包內(nèi)容,這時(shí)我們看到 有dSYMs躺坟,Products沦补,SCMBlueprint三個(gè)文件夾,我們需要用到的是前兩個(gè)文件夾
dSYMs文件夾
Products文件夾
此時(shí)咪橙,將這倆文件夾中最里層的文件都取出來(lái)夕膀,放到一個(gè)新的文件夾中
將倆文件放到新的文件夾中
2.打開(kāi)終端虚倒,cd到剛才新建的文件夾(錯(cuò)誤報(bào)告)的目錄下
輸入命令xcrun atos -arch arm64 -o xxxx.app/xxxx 0x10019bc48
其中 arm64是CPU Type;
xxxx對(duì)應(yīng)的是你的工程名产舞,也就是上文友盟錯(cuò)誤報(bào)告圖片中打紅色馬賽克的部分魂奥;
0x10019bc48 是錯(cuò)誤代碼的地址,也就是上文友盟錯(cuò)誤報(bào)告圖片中淡綠色的那個(gè)內(nèi)存地址易猫。
定位錯(cuò)誤代碼
其中-[SubscribeViewController isSubcribeSuccess:] (in woshiPM) (SubscribeViewController.m:342)就是錯(cuò)誤代碼的位置耻煤,在SubscribeViewController.m中的isSubcribeSuccess方法中,342是代碼所在的行數(shù)准颓。
這樣就可以在你的工程中找到相應(yīng)的代碼去做修改了哈蝇。