iOS解析crash日志

一、如果連著本機(jī)的手機(jī),運(yùn)行Xcode發(fā)生crash,解析如下:

(1) 在Xcode中找到crash文件(Window->Devices);
(2) 找到設(shè)備,點(diǎn)擊View Devices Logs,找到發(fā)生的crash文件;
(3) 右擊crash文件,點(diǎn)擊Re-Symbolicate Log后crash就自動(dòng)解析。

二、很多時(shí)候有人拿著線上的版本來找開發(fā),說APP崩潰了,你幫忙看下原因,這個(gè)時(shí)候我們插上了手機(jī),在Xcode上運(yùn)行了,可是崩潰并沒有復(fù)現(xiàn),那么怎么辦呢?

1、在桌面新建一個(gè)文件夾,名字叫crash
2、打開Xcode,導(dǎo)出崩潰日志

鏈接設(shè)備到Xcode,點(diǎn)擊window--->Devices---->選中你的iPhone設(shè)備---->點(diǎn)擊View Device Logs
選中你的崩潰應(yīng)用信息,右鍵選擇export log,導(dǎo)出到你剛剛新建的文件夾中


導(dǎo)出崩潰日志.png
3、在Finder上右鍵選擇前往文件夾,輸入下面的地址
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

把這個(gè)拷貝到你新建的文件夾中,這是個(gè)解析crash的腳本

4、導(dǎo)出dSYM文件

我們?cè)诎l(fā)版的時(shí)候,都會(huì)保留一份dSYM文件,把對(duì)應(yīng)的版本的dSYM文件拷貝到你新建的文件夾中(每次發(fā)版千萬記得保存)
Xcode在每次運(yùn)行的時(shí)候都會(huì)有一份對(duì)應(yīng)dSYM與你運(yùn)行的程序相對(duì)應(yīng),要想解出crash,必須找到crash對(duì)應(yīng)的程序的dSYM文件

另外插一句,Xcode的dSYM文件除了會(huì)在發(fā)包的時(shí)候生成,平常我們運(yùn)行的時(shí)候都會(huì)生成,打開路徑是,右鍵下面這個(gè)文件,showInFinder


dSYM路徑.png

跟它平級(jí)的有個(gè).dSYM文件,這就是我們每次運(yùn)行生成的文件,也是我們解crash需要的


dSYM.png.jpeg

如果你沒有看到這個(gè)文件,那么一定是你把開關(guān)關(guān)掉了,進(jìn)到工程里進(jìn)行如下設(shè)置后再編譯就可以了
dSYM打開方式.jpeg
5、現(xiàn)在你的文件夾里應(yīng)該有這三個(gè)文件
文件夾中的內(nèi)容.png
6、打開終端輸入如下命令
cd /Users/Summer/Desktop/crash   // 進(jìn)入到你的文件夾中
./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash  // 進(jìn)行crash日志解析

如果終端報(bào)如下錯(cuò)誤

Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.

需要接著輸入下面這條指令,告訴終端 "DEVELOPER_DIR" 的位置

export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

然后再輸入

./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash 
7、之后就可以在你的文件夾中就會(huì)出現(xiàn)這個(gè)問件
解析好的crash日志.png

這個(gè)就是解析好的crash日志

三、在Jenkins上下的包發(fā)生crash有兩種情況,一種是可以提供給你發(fā)生crash的手機(jī),一種是沒有手機(jī),只有crash日志,下面分情況來討論

(一)提供發(fā)生crash的手機(jī)

1、到Jenkins上面找到你構(gòu)建的版本,打開

下載如下兩個(gè)文件,路徑隨意

1.png

2、鏈接設(shè)備到Xcode,點(diǎn)擊window--->Devices---->選中你的iPhone設(shè)備---->點(diǎn)擊View Device Logs
下載完成后會(huì)出現(xiàn)如下的文件
2.png

3、右鍵選中ipa格式的文件,選擇打開方式--->歸檔實(shí)用工具

4、之后回到Xcode中,選中要解析的那條log,點(diǎn)擊右鍵,選擇Re-Symbolicate-Log

3.png

這樣就能把崩潰信息解析出來


4.png

圖例中是最近的一條,crash的位置是JDBCallManager的348行,這樣就可以對(duì)其進(jìn)行修改了~

(二)沒有crash手機(jī),只有crash日志

1、本地新建一個(gè)文件夾,如crash,下載crash文件到這個(gè)文件夾中
2、在Jenkins上找到發(fā)生crash的那一次構(gòu)建,打開,下載.dSYM.Zip包,并解壓這個(gè)包,在很深的層次里面,有一個(gè).app.dSYM的文件(沒有找到就一直郵件顯示包內(nèi)容,知道找到這個(gè)文件為止),將這個(gè)文件拷貝出來,到你新建的crash文件夾下
3、獲取Xcode的symbolicatecrash腳本文件,文件所在目錄為

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

將symbolicatecrash文件拷貝到crash文件同一個(gè)文件夾下
4、打開終端,到crash文件下執(zhí)行crash解析命令
./symbolicatecrash ./.crash ./.app.dSYM > symbol.crash
會(huì)生成一個(gè)symbol.crash文件,這個(gè)文件內(nèi)容就是解析crash后所需要的內(nèi)容。
PS: 若報(bào)錯(cuò)
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash, 只需在終端中運(yùn)行

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

(包版本號(hào)可以從crash文件中獲取,version里就有)
如果想還原某一行,使用如下命令
atos -o (上文中.app.dSYM文件右鍵顯示包內(nèi)容,一直剝離到標(biāo)有你工程名字的那一層,把那個(gè)文件的地址拖進(jìn)來,這個(gè)文件的那一層已經(jīng)是最后一層,不能再剝離了) -arch arm64 -l (crash日志里你想要解析的那一行從前面數(shù)第四列數(shù)字,復(fù)制過來,例如:0x1000a8000) (crash日志里你想要解析的那一行從前面數(shù)第三列數(shù)字,復(fù)制過來,例如:0x00000001009d80fc )回車就可以看到解析出來的這一行,完整示例

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

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

  • Update Log: 2017.8.24: 初版 一.獲取.crash文件 真機(jī)連接電腦.導(dǎo)出.crash日志文...
    Sunxxxxx丶閱讀 502評(píng)論 0 0
  • 如果大家是用真機(jī)在調(diào)試的過程中出現(xiàn)了Crash,那么請(qǐng)看iOS調(diào)試之 crash log分析 前言 導(dǎo)讀:Unde...
    KODIE閱讀 6,620評(píng)論 7 12
  • 本文就捕獲iOS Crash、Crash日志組成、Crash日志符號(hào)化、異常信息解讀、常見的Crash五部分介紹。...
    xukuangbo_閱讀 1,737評(píng)論 0 0
  • 開發(fā)的App或者游戲提交審核后,偶爾會(huì)收到測(cè)試反饋的消息,說應(yīng)用崩潰了,bug偶爾出現(xiàn),難以找到確定的重現(xiàn)方法。怎...
    sky_kYU閱讀 1,522評(píng)論 0 0
  • 這幾年來很多書為游戲站臺(tái)(《游戲改變世界》),說把學(xué)習(xí)變成一個(gè)游戲化的形式,即通有一個(gè)明確的目標(biāo),然后通過立即反饋...
    李祖學(xué)大蝦閱讀 865評(píng)論 0 0

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