iOS崩潰日志——這一堆“亂碼”如何看

本文章轉(zhuǎn)載于搜狗測試

我們在進行iPhone應(yīng)用測試時必然會在“隱私”中找到不少應(yīng)用的崩潰日志,但是不會閱讀對于很多人來說簡直頭疼落蝙。在此小編為大家詳細介紹一下具體的閱讀方法茅信,希望大家可以更快的定位BUG分别。首先我們先看一下從iPhone中隨機抽出的一個Crash日志:

//1.進程信息

Hardware Model:????? iPhone9,1

Process:???????????? com.sogou.sogouinput.BaseKeyboard[4447]

Path:???????????????/private/var/containers/Bundle/Application/D121D4D7-C3EE-4861-B5AF-10C367749E24/SogouInput.app/PlugIns/com.sogou.sogouinput.BaseKeyboard.appex/com.sogou.sogouinput.BaseKeyboard

Identifier:????????? com.sogou.sogouinput-.basekeyboard

Version:???????????? 79794 (4.1.0)

Code Type:?????????? ARM-64 (Native)

Role:??????????????? Foreground

Parent Process:????? launchd [1]

Coalition:?????????? com.sogou.sogouinput-.basekeyboard[4557]

//2.基本信息

Date/Time:?????????? 2016-11-22 18:55:46.2041 +0800

Launch Time:???????? 2016-11-22 18:55:45.4011 +0800

OS Version:????????? iPhone OS 10.0.2 (14A456)

Report Version:????? 104

//3.異常信息

Exception Type:? EXC_BAD_ACCESS (SIGSEGV)

Exception Subtype:KERN_INVALID_ADDRESS at 0x006e006e00000010

Triggered byThread:? 7

//4.線程回溯(顯示發(fā)生crash線程的信息)

Thread 0 name:? Dispatch queue: com.apple.main-thread

Thread 0:

0?? libsystem_kernel.dylib??????? ?0x0000000185fa016cmach_msg_trap + 8

1?? libsystem_kernel.dylib??????? ?0x0000000185f9ffdcmach_msg + 72

2?? CoreFoundation??????????????? ??? 0x0000000186f9dcec __CFRunLoopServiceMachPort + 192

3?? CoreFoundation??????????????? ??? 0x0000000186f9b908 __CFRunLoopRun + 1132

4?? CoreFoundation??????????????? ??? 0x0000000186eca048 CFRunLoopRunSpecific + 444

5?? GraphicsServices????????????? ????? 0x000000018894d198GSEventRunModal + 180

6?? UIKit???????????????????????? ?0x000000018cea4628 -[UIApplication _run] + 684

Thread 7 name:? SGInputThread

Thread 7 Crashed:

0?? libsystem_c.dylib???????????? ?0x0000000185eda77cfclose + 40

1?? libsystem_c.dylib???????????? ?0x0000000185eda778fclose + 36

2?? ...gou.sogouinput.BaseKeyboard??? 0x000000010034e420 t_fileRead::Close()(t_file.cpp:251)

3?? ...gou.sogouinput.BaseKeyboard??? 0x000000010034e49c t_fileRead::Open(unsignedshort const*) (t_file.cpp:221)

4?? ...gou.sogouinput.BaseKeyboard??? 0x00000001002ac8f4t_lbsDict::AddSCD(unsigned short const*, int) (t_lbsDict.cpp:218)

5?? ...gou.sogouinput.BaseKeyboard??? 0x00000001003f718ct_convertInterface::AddSCD(unsigned short const*, int)(t_convertInterface.cpp:544)

6?? ...gou.sogouinput.BaseKeyboard??? 0x0000000100362478t_pyDictInterface::BuildExtDict(unsigned short const*, s_cellDictInput*,s_cellDictOutput*) (Dict.cpp:961)

//5.進程狀態(tài)

Thread 7 crashedwith ARM Thread State (64-bit):

x0: 0x0000000000000000???? ?????? x1:0x0000000185f1b89c? ?????? x2: 0x0000000000000000 ?????? x3:0x00000001080e422c

x4: 0x0000000100000001???? ?????? x5:0x0000000000000001 ?????? x6: 0x0000000000000000 ?????? x7: 0x0000000000000000

x8: 0x000000004f4e4345????? ?????? x9:0x0000000000000038 ?????? x10: 0x0000000000000010????? x11:0x000000000000001f

x12: 0x000000000000000d???? ?????? fp:0x000000016e399d50? ?????? lr: 0x0000000185eda778?? ?????? sp:0x000000016e399d40

pc:0x0000000185eda77c? ?????? ?????? cpsr:0x20000000

//6.二進制映像

Binary Images:

0x100fa8000 -0x100fd7fff dyld arm64? /usr/lib/dyld

0x102a88000 -0x102a8ffff sdk.dylib arm64?<5d710be25db4309d8b5e344066a9cb29>/System/Library/Caches/com.apple.xpc/sdk.dylib

0x1859a4000 -0x1859a5fff libSystem.B.dylib arm64?<8788325e11bc31a39b075a3497d26ebd> /usr/lib/libSystem.B.dylib

0x1859a6000 -0x1859fbfff libc++.1.dylib arm64?<95f6dd603b933208ba95cc2d84613c54> /usr/lib/libc++.1.dylib

0x1859fc000 -0x185a1cfff libc++abi.dylib arm64?<286b3adc78d1308eaa0d6f10914b1fa7>

日志主要分為六個部分:進程信息哲戚、基本信息異常信息線程回溯谜喊、線程狀態(tài)二進制映像潭兽,具體位置已經(jīng)標記在上述文件中。

日志組成分析:

在上述六個部分中斗遏,我們最需要關(guān)注的是異常信息和線程回溯的內(nèi)容山卦。

1.進程信息:發(fā)生crash進程的相關(guān)信息

Hardware Model: 標識設(shè)備類型

Process:應(yīng)用名稱

Path所在路徑

Identifier程序ID

Version版本號

Code Type處理器架構(gòu)

2.基本信息:給出了一些基本信息,包括閃退發(fā)生的日期和時間诵次,設(shè)備的iOS版本账蓉。

3.異常信息:崩潰時拋出的異常類型,還能看到異常編碼和拋出異常的線程逾一。

Exception Type:?EXC_BAD_ACCESS (SIGSEGV)

Exception Subtype: KERN_INVALID_ADDRESS at0x006e006e00000010

Triggered by Thread:? 7

Exception Type異常類型:通常包含Signal信號 和 EXC_BAD_ACCESS等铸本。

Exception Codes:異常編碼:

Crashed Thread:發(fā)生Crash的線程id

注:

具體信號說明參見iOS異常捕獲

詳細的異常編碼代表的含義請參考:Hexspeak

因此我們可以確定本次崩潰原因是內(nèi)存訪問錯誤

4.線程回溯:回溯是閃退發(fā)生時所有活動幀清單。它包含閃退發(fā)生時調(diào)用函數(shù)的清單遵堵。

實際上我們直接從iPhone中導(dǎo)出的崩潰日志應(yīng)該是一串地址表示的箱玷,如下:

AppName 0x0000000100205280 0x0000000100028000 + 1954432

AppName 0x00000001002ae59c 0x0000000100028000 + 2647440

大家可以通過symbolicatecrash命令和dSYM文件將最后的兩列解析為具體的方法名和行數(shù)。(具體使用方法大家可以自行查找)

在這里我們就可以看到詳細的方法名陌宿,這樣就能幫助開發(fā)同學(xué)定位到具體位置锡足。

5.線程狀態(tài):閃退時寄存器中的值。一般不需要這部分的信息壳坪,因為回溯部分的信息已經(jīng)足夠讓你找出問題所在舶得。

6.二進制映像:閃退時已經(jīng)加載的二進制文件。

低內(nèi)存崩潰:

因為低內(nèi)存崩潰日志與普通崩潰日志略有不同爽蝴,所以本教程特別分開說明一下扩灯。

iOS設(shè)備檢測到低內(nèi)存時,虛擬內(nèi)存系統(tǒng)發(fā)出通知請求應(yīng)用釋放內(nèi)存霜瘪。這些通知發(fā)送到所有正在運行的應(yīng)用和進程珠插,試圖收回一些內(nèi)存。

如果內(nèi)存使用依然居高不下颖对,系統(tǒng)將會終止后臺線程以緩解內(nèi)存壓力捻撑。如果可用內(nèi)存足夠,應(yīng)用將能夠繼續(xù)運行而不會產(chǎn)生崩潰報告缤底。否則顾患,應(yīng)用將被iOS終止,并產(chǎn)生低內(nèi)存崩潰報告个唧。低內(nèi)存崩潰日志上沒有應(yīng)用線程的堆椊猓回溯。相反徙歼,上面顯示的是以內(nèi)存頁數(shù)為單位的各進程內(nèi)存使用量犁河。被iOS因釋放內(nèi)存頁終止的進程名稱后面你會看到j(luò)ettisoned 字樣鳖枕。如果看到它出現(xiàn)在你的應(yīng)用名稱后面,說明你的應(yīng)用因使用太多內(nèi)存而被終止了桨螺。

低內(nèi)存崩潰日志看起來像這樣:

當應(yīng)用發(fā)生低內(nèi)存閃退時宾符,你必需看看應(yīng)用中內(nèi)存使用的方式,以及是如何處理低內(nèi)存警告的灭翔。你可以使用Instruments工具中使用Allocations 和 Leaks來發(fā)現(xiàn)內(nèi)存分配問題和內(nèi)存泄漏問題魏烫。如果你不知道如何利用Instruments 檢查內(nèi)存問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肝箱,一起剝皮案震驚了整個濱河市哄褒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌煌张,老刑警劉巖呐赡,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唱矛,居然都是意外死亡罚舱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門绎谦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來管闷,“玉大人,你說我怎么就攤上這事窃肠“觯” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵冤留,是天一觀的道長碧囊。 經(jīng)常有香客問我,道長纤怒,這世上最難降的妖魔是什么糯而? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮泊窘,結(jié)果婚禮上熄驼,老公的妹妹穿的比我還像新娘。我一直安慰自己烘豹,他們只是感情好瓜贾,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著携悯,像睡著了一般祭芦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憔鬼,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天龟劲,我揣著相機與錄音胃夏,去河邊找鬼。 笑死咸灿,一個胖子當著我的面吹牛构订,可吹牛的內(nèi)容都是我干的侮叮。 我是一名探鬼主播避矢,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼囊榜!你這毒婦竟也來了审胸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤卸勺,失蹤者是張志新(化名)和其女友劉穎砂沛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曙求,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡碍庵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了悟狱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片静浴。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挤渐,靈堂內(nèi)的尸體忽然破棺而出苹享,到底是詐尸還是另有隱情,我是刑警寧澤浴麻,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布得问,位于F島的核電站,受9級特大地震影響软免,放射性物質(zhì)發(fā)生泄漏宫纬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一膏萧、第九天 我趴在偏房一處隱蔽的房頂上張望漓骚。 院中可真熱鬧,春花似錦向抢、人聲如沸认境。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叉信。三九已至,卻和暖如春艘希,著一層夾襖步出監(jiān)牢的瞬間硼身,已是汗流浹背硅急。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佳遂,地道東北人营袜。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像丑罪,于是被迫代替她去往敵國和親荚板。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容