iOS Crash - 分析篇

在分析一份crash日志之前,如果開發(fā)人員對于常見的錯誤類型有所了解舔腾,那定是極好的诱篷。crash日志的產(chǎn)生來源于兩種問題:違反iOS策略被干掉,以及自身的代碼bug崭孤。

1.違反iOS策略

  • 內(nèi)存報警閃退

當(dāng)iOS檢測到內(nèi)存過低時类嗤,它的VM系統(tǒng)會發(fā)出低內(nèi)存警告通知,嘗試回收一些內(nèi)存辨宠;如果情況沒有得到足夠的改善遗锣,iOS會終止后臺應(yīng)用以回收更多內(nèi)存;最后嗤形,如果內(nèi)存還是不足精偿,那么正在運行的應(yīng)用可能會被終止掉。在Debug模式下,可以主動將客戶端執(zhí)行的動作邏輯寫入一個log文件中还最,這樣程序童鞋可以將內(nèi)存預(yù)警的邏輯寫入該log文件墓阀,當(dāng)發(fā)生如下截圖中的內(nèi)存報警時,就是提醒當(dāng)前客戶端性能內(nèi)存吃緊拓轻,可以通過Instruments工具中的Allocations 和 Leaks模塊庫來發(fā)現(xiàn)內(nèi)存分配問題和內(nèi)存泄漏問題。
我們使用Xcode 5和iOS 7的設(shè)備模擬一次低內(nèi)存閃退经伙,然后通過Organizer查看產(chǎn)生的crash日志扶叉,可以發(fā)現(xiàn)Process和Type都為Unknown:



具體內(nèi)容

第一部分是崩潰信息,包括識別標(biāo)識帕膜、軟硬件信息和時間信息等枣氧。
第二部分是內(nèi)存頁分配信息,以及當(dāng)前占用內(nèi)存最多的進程垮刹,上圖中為crashTypeDemo达吞。
第三部分是具體的進程列表,描述著每個進程使用內(nèi)存的情況以及當(dāng)前狀態(tài)荒典。在較早的版本中可以在某些進程后面看到“jettisoned”字樣酪劫,表明這些進程使用過多內(nèi)存被終止了,而現(xiàn)在我們看到的是“vm-pageshortage”字樣寺董。

  • Watchdog響應(yīng)超時

當(dāng)應(yīng)用程序?qū)σ恍┨囟ǖ氖录ū热鐔痈苍恪炱稹⒒謴?fù)遮咖、結(jié)束)響應(yīng)不及時滩字,蘋果的Watchdog機制會把應(yīng)用程序干掉,并生成一份相應(yīng)的crash日志御吞。這些事件與下列UIApplicationDelegate方法相對應(yīng)麦箍,當(dāng)遇到Watchdog日志時,可以檢查上圖中的幾個方法是否有比較重的阻塞UI的動作陶珠。

  • 用戶強制退出

一看到“用戶強制退出”挟裂,首先可能想到的雙擊Home鍵,然后關(guān)閉應(yīng)用程序背率。不過這種場景一般是不會產(chǎn)生crash日志的话瞧,因為雙擊Home鍵后,所有的應(yīng)用程序都處于后臺狀態(tài)寝姿,而iOS隨時都有可能關(guān)閉后臺進程交排,當(dāng)應(yīng)用阻塞界面并停止響應(yīng)時這種場景才會產(chǎn)生crash日志。這里指的“用戶強制退出”場景饵筑,是稍微比較復(fù)雜點的操作:先按住電源鍵埃篓,直到出現(xiàn)“滑動關(guān)機”的界面時,再按住Home鍵根资,這時候當(dāng)前應(yīng)用程序會被終止掉架专,并且產(chǎn)生一份相應(yīng)事件的crash日志同窘。

Paste_Image.png

2.應(yīng)用邏輯的Bug

大多數(shù)閃退崩潰日志的產(chǎn)生都是因為應(yīng)用中的Bug,這種Bug的錯誤種類有很多部脚,比如

SEGV:(Segmentation Violation想邦,段違例),無效內(nèi)存地址委刘,比如空指針丧没,未初始化指針,棧溢出等锡移; 
SIGABRT:收到Abort信號呕童,可能自身調(diào)用abort()或者收到外部發(fā)送過來的信號; 
SIGBUS:總線錯誤淆珊。與SIGSEGV不同的是夺饲,SIGSEGV訪問的是無效地址(比如虛存映射不到物理內(nèi)存),而SIGBUS訪問的是有效地址施符,但總線訪問異常(比如地址對齊問題)往声; 
SIGILL:嘗試執(zhí)行非法的指令,可能不被識別或者沒有權(quán)限操刀; SIGFPE:Floating Point Error烁挟,數(shù)學(xué)計算相關(guān)問題(可能不限于浮點計算),比如除零操作骨坑; 
SIGPIPE:管道另一端沒有進程接手?jǐn)?shù)據(jù)撼嗓;

常見的崩潰原因基本都是代碼邏輯問題或資源問題,比如數(shù)組越界欢唾,訪問野指針或者資源不存在且警,或資源大小寫錯誤等。需要稍微注意點的是多線程問題礁遣,當(dāng)一時找不到解決思路時斑芜,不妨往多線程方面考慮下。

3. 常見錯誤標(biāo)識** Exception codes**

  • 0x8badf00d錯誤碼:Watchdog超時祟霍,意為“ate bad food”杏头。
  • 0xdeadfa11錯誤碼:用戶強制退出,意為“dead fall”沸呐。
  • 0xbaaaaaad錯誤碼:用戶按住Home鍵和音量鍵醇王,獲取當(dāng)前內(nèi)存狀態(tài),不代表崩潰崭添。
  • 0xbad22222錯誤碼:VoIP應(yīng)用(因為太頻繁寓娩?)被iOS干掉。
  • 0xc00010ff錯誤碼:因為太燙了被干掉,意為“cool off”棘伴。
  • 0xdead10cc錯誤碼:因為在后臺時仍然占據(jù)系統(tǒng)資源(比如通訊錄)被干掉寞埠,意為“dead lock”。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末焊夸,一起剝皮案震驚了整個濱河市仁连,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱穗,老刑警劉巖怖糊,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颇象,居然都是意外死亡,警方通過查閱死者的電腦和手機并徘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門遣钳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人麦乞,你說我怎么就攤上這事蕴茴。” “怎么了姐直?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵倦淀,是天一觀的道長。 經(jīng)常有香客問我声畏,道長撞叽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任插龄,我火速辦了婚禮愿棋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘均牢。我一直安慰自己糠雨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布徘跪。 她就那樣靜靜地躺著甘邀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪垮庐。 梳的紋絲不亂的頭發(fā)上松邪,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音突硝,去河邊找鬼测摔。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锋八。 我是一名探鬼主播浙于,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挟纱!你這毒婦竟也來了羞酗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤紊服,失蹤者是張志新(化名)和其女友劉穎檀轨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欺嗤,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡参萄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了煎饼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讹挎。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吆玖,靈堂內(nèi)的尸體忽然破棺而出筒溃,到底是詐尸還是另有隱情,我是刑警寧澤沾乘,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布怜奖,位于F島的核電站,受9級特大地震影響翅阵,放射性物質(zhì)發(fā)生泄漏歪玲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一怎顾、第九天 我趴在偏房一處隱蔽的房頂上張望读慎。 院中可真熱鬧,春花似錦槐雾、人聲如沸夭委。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽株灸。三九已至,卻和暖如春擎值,著一層夾襖步出監(jiān)牢的瞬間慌烧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工鸠儿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屹蚊,地道東北人厕氨。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像汹粤,于是被迫代替她去往敵國和親命斧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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

  • 轉(zhuǎn)載:[http://blog.csdn.net/jasonblog/article/details/190315...
    狼之獨步閱讀 591評論 1 1
  • //聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄 1.如何追蹤app崩潰率,如何解決線上閃退 當(dāng)iO...
    石虎132閱讀 8,683評論 3 23
  • 1.如何追蹤app崩潰率芹壕,如何解決線上閃退 當(dāng) iOS設(shè)備上的App應(yīng)用閃退時汇四,操作系統(tǒng)會生成一個crash日志,...
    中婭沙漏閱讀 580評論 0 5
  • 在iOS開發(fā)中踢涌,Crash無疑是App的致命殺手通孽。作為一個嚴(yán)謹(jǐn)?shù)膇OS 開發(fā)人員來說,寫出優(yōu)秀的健碩的無Cr...
    Ekkooo丶閱讀 3,813評論 2 22
  • 她挽起鬢邊散落的一縷長發(fā)睁壁,心神不寧地在指間繞了兩圈利虫,又松開,再次向窗外望去堡僻。 楊柳依依,春意擾人疫剃。 那人钉疫,還是沒來...
    巫小貝閱讀 359評論 0 0