上線產(chǎn)品Bug調(diào)試

在日常開發(fā)中,App難免會發(fā)生爆炸??...哦不...崩潰...對于那些簡單的崩潰,看看大概??看一眼心里就有數(shù)了,但是對于復(fù)雜的崩潰呢,就要通過我們解析Crash文件來分析一下了

利用第三方統(tǒng)計(jì)功能符號化iOS應(yīng)用崩潰日志

在iOS中獲取崩潰信息的方式有很多,比較常見的是使用友盟、騰訊、百度等第三方分析工具,或者自己收集崩潰信息并上傳公司服務(wù)器。
注意,以下情況不會有崩潰信息產(chǎn)生:
1.內(nèi)存訪問錯(cuò)誤(不是野指針錯(cuò)誤)
2.低內(nèi)存,當(dāng)程序內(nèi)存使用過多會造成系統(tǒng)低內(nèi)存的問題,系統(tǒng)會將程序內(nèi)存回收
3.因?yàn)槟撤N原因觸發(fā)看門狗機(jī)制

什么是dSYM文件

Xcode編譯項(xiàng)目后,我們會看到一個(gè)同名的 dSYM 文件,dSYM 是保存 16 進(jìn)制函數(shù)地址映射信息的中轉(zhuǎn)文件,我們調(diào)試的 symbols 都會包含在這個(gè)文件中,并且每次編譯項(xiàng)目的時(shí)候都會生成一個(gè)新的 dSYM 文件,位于 /Users/<用戶名>/Library/Developer/Xcode/Archives 目錄下,對于每一個(gè)發(fā)布版本我們都很有必要保存對應(yīng)的 Archives 文件 ( AUTOMATICALLY SAVE THE DSYM FILES ,通過腳本每次編譯后都自動保存 dSYM 文件)。

dSYM有什么作用

當(dāng)我們軟件 release 模式打包或上線后,不會像我們在 Xcode 中那樣直觀的看到用崩潰的錯(cuò)誤,這個(gè)時(shí)候我們就需要分析 crash report 文件了,iOS 設(shè)備中會有日志文件保存我們每個(gè)應(yīng)用出錯(cuò)的函數(shù)內(nèi)存地址,通過 Xcode 的 Organizer 可以將 iOS 設(shè)備中的 DeviceLog 導(dǎo)出成 crash 文件,這個(gè)時(shí)候我們就可以通過出錯(cuò)的函數(shù)地址去查詢 dSYM 文件中程序?qū)?yīng)的函數(shù)名和文件名。大前提是我們需要有軟件版本對應(yīng)的 dSYM 文件,這也是為什么我們很有必要保存每個(gè)發(fā)布版本的 Archives 文件了

友盟統(tǒng)計(jì)具體的做法

首先將文件一一對應(yīng)

每一個(gè) xx.app 和 xx.app.dSYM 文件都有對應(yīng)的 UUID,crash 文件也有自己的 UUID,只要這三個(gè)文件的 UUID 一致,我們就可以通過他們解析出正確的錯(cuò)誤函數(shù)信息了。
1.查看 xx.app 文件的 UUID,terminal 中輸入命令 :
dwarfdump --uuid xx.app/xx (xx代表你的項(xiàng)目名)
2.查看 xx.app.dSYM 文件的 UUID ,在 terminal 中輸入命令:
dwarfdump --uuid xx.app.dSYM
3.crash 文件內(nèi)第一行 Incident Identifier 就是該 crash 文件的 UUID。

dSYM工具的具體用法

1.將打包發(fā)布軟件時(shí)的xcarchive文件拖入軟件窗口內(nèi)的任意位置(支持多個(gè)文件同時(shí)拖入,注意:文件名不要包含空格)
2.選中任意一個(gè)版本的xcarchive文件,右邊會列出該xcarchive文件支持的CPU類型,選中錯(cuò)誤對應(yīng)的CPU類型。
3.對比錯(cuò)誤給出的UUID和工具界面中給出的UUID是否一致。
4.將錯(cuò)誤地址輸入工具的文本框中,點(diǎn)擊分析。

image.png

騰訊Bugly具體的做法

首先要確保Xcode已經(jīng)做了如下的設(shè)置:

image.png

Debug為DWARF with dSYM File會有警告,Release為DWARF就不會生成dSYM文件。

在你每次Archive一個(gè)版本時(shí),都會相應(yīng)的生成一個(gè)dSYM文件(前提是上面的設(shè)置是正確的),按如下操作找到dSYM:

image.png
image.png
image.png
image.png

有了dSYM文件后還需要進(jìn)行如下步驟:
1.在Bugly網(wǎng)站下載iOS對應(yīng)的"符號表工具";
2.下載完成后,按照我的方法,你只要把buglySymboliOS.jar文件提取出來,和dSYM文件放在同一個(gè)目錄下就OK了;
3.打開命令行,進(jìn)入到這兩個(gè)文件所在的目錄,執(zhí)行如下命令:java -jar buglySymboliOS.jar -i xx.app.dSYM/ (xx代表你的App的名稱)
4.然后在該目錄下就會生成一個(gè).zip文件;
5.去bugly網(wǎng)站中,找到你的App版本控制,選擇對應(yīng)的版本,上傳上面生成的.zip文件;
6.完成,日后的崩潰日志就都會被符號化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容