2019-02-12

Crash analyzing

Objective-C exception

Exceptions in Objective-C are used to indicate programming errors detected at runtime such as accessing an array with an index that is out-of-bounds, attempts to mutate immutable objects, not implementing a required method of a protocol, or sending a message which the receiver does not recognize.

  • NSInvalidArgumentException

    沒有對于參數的合法性進行校驗
    常見的有傳入nil作為參數
    
  • NSRangeException

    越界異常 
    主要原因是沒有對于索引進行合法性的檢查,導致索引落在集合數據的合法范圍之外
    
  • NSGenericException

    通用異常
    最容易出現在foreach操作中账锹,主要原因是在遍歷過程中進行了元素的修改
    
  • NSMallocException

    內存分配異常
    無法分配足夠的內存空間,分配一塊超大的內存空間就會導致此類的異常
    
  • NSFileHandleOperationException

    文件處理異常
    對文件進行相關操作時產生了異常士八,如手機沒有足夠的存儲空間削祈,文件讀寫權限問題等
    

Mach exception

  • EXC_BAD_ACCESS
    Could not access memory

    Code contains kern_return_t describing error.
    Subcode contains bad memory address.
    
  • EXC_BAD_INSTRUCTION
    Instruction failed

    Illegal or undefined instruction or operand
    
  • EXC_ARITHMETIC
    Arithmetic exception

    Exact nature of exception is in code field
    
  • EXC_EMULATION
    Emulation instruction

    Emulation support instruction encountered
    Details in code and subcode fields
    
  • EXC_SOFTWARE
    Software generated exception

    Exact exception is in code field.
    Codes 0 - 0xFFFF reserved to hardware
    Codes 0x10000 - 0x1FFFF reserved for OS emulation (Unix)
    
  • EXC_BREAKPOINT
    Trace TRAP, breakpoint, etc.

    Details in code field.
    
  • EXC_SYSCALL
    System calls

  • EXC_MACH_SYSCALL
    Mach system calls.
  • EXC_RPC_ALERT
    RPC alert
  • EXC_CRASH
    Abnormal process exit
  • EXC_RESOURCE
    Hit resource consumption limit

    Exact resource is in code field.
    
  • EXC_GUARD
    Violated guarded resource protections

  • EXC_CORPSE_NOTIFY
    Abnormal process exited to corpse state
  • EXC_CORPSE_VARIANT_BIT
    bit set for EXC_*_CORPSE variants of EXC_*

Unix Signal

  • SIGHUP

    用戶終端連接(正逞阆纾或非正常)結束時發(fā)出

  • SIGINT
    程序終止(interrupt)信號

  • SIGQUIT
    和SIGINT類似, 但由QUIT字符(通常是Ctrl-)來控制. 進程在因收到SIGQUIT退出時會產生core文件, 在這個意義上類似于一個程序錯誤信號姑荷。

  • SIGILL
    執(zhí)行了非法指令. 通常是因為可執(zhí)行文件本身出現錯誤, 或者試圖執(zhí)行數據段. 堆棧溢出時也有可能產生這個信號耐量。

  • SIGTRAP
    由斷點指令或其它trap指令產生

  • SIGABRT
    調用abort函數生成的信號飞蚓,進程非正常退出。

  • SIGPOLL
    當某個事件發(fā)送給Pollable Device的時候發(fā)送廊蜒。

  • SIGIOT
    實現相關的硬件異常趴拧,一般對應SIGABRT。

  • SIGEMT
    發(fā)生仿真器陷阱時發(fā)出山叮。

  • SIGFPE
    在發(fā)生致命的算術運算錯誤時發(fā)出. 不僅包括浮點運算錯誤, 還包括溢出及除數為0等其它所有的算術的錯誤著榴。

  • SIGKILL
    用來立即結束程序的運行. 本信號不能被阻塞、處理和忽略

  • SIGBUS
    非法地址, 包括內存地址對齊(alignment)出錯

  • SIGSEGV
    試圖訪問未分配給自己的內存, 或試圖往沒有寫權限的內存地址寫數據屁倔。

  • SIGSYS
    非法的系統(tǒng)調用脑又。

  • SIGPIPE
    管道破裂。這個信號通常在進程間通信產生锐借,比如采用FIFO(管道)通信的兩個進程问麸,讀管道沒打開或者意外終止就往管道寫,寫進程會收到SIGPIPE信號钞翔。此外用Socket通信的兩個進程严卖,寫進程在寫Socket的時候,讀進程已經終止布轿。

  • SIGALRM
    時鐘定時信號, 計算的是實際的時間或時鐘時間哮笆。 alarm函數使用該信號。

  • SIGTERM
    程序結束(terminate)信號, 與SIGKILL不同的是該信號可以被阻塞和處理汰扭。通常用來要求程序自己正常退出稠肘,shell命令kill缺省產生這個信號。如果進程終止不了东且,我們才會嘗試SIGKILL启具。

  • SIGURG
    有”緊急”數據或out-of-band數據到達socket時產生。

  • SIGSTOP
    停止(stopped)進程的執(zhí)行. 注意它和terminate以及interrupt的區(qū)別:該進程還未結束, 只是暫停執(zhí)行珊泳。 本信號不能被阻塞, 處理或忽略鲁冯。

  • SIGTSTP
    停止進程的運行, 但該信號可以被處理和忽略拷沸。

  • SIGCONT
    讓一個停止(stopped)的進程繼續(xù)執(zhí)行。 本信號不能被阻塞薯演。

  • SIGCHLD
    子進程結束時, 父進程會收到這個信號撞芍。

  • SIGTTIN
    當后臺作業(yè)要從用戶終端讀數據時, 該作業(yè)中的所有進程會收到SIGTTIN信號。

  • SIGTTOU
    類似于SIGTTIN, 但在寫終端(或修改終端模式)時收到跨扮。

  • SIGIO
    文件描述符準備就緒, 可以開始進行輸入/輸出操作序无。

  • SIGXCPU
    超過CPU時間資源限制。這個限制可以由getrlimit/setrlimit來讀取/改變衡创。

  • SIGXFSZ
    當進程企圖擴大文件以至于超過文件大小資源限制帝嗡。

  • SIGVTALRM
    虛擬時鐘信號. 類似于SIGALRM, 但是計算的是該進程占用的CPU時間。

  • SIGPROF
    類似于SIGALRM/SIGVTALRM, 但包括該進程用的CPU時間以及系統(tǒng)調用的時間璃氢。

  • SIGWINCH
    窗口大小改變時發(fā)出哟玷。

  • SIGINFO
    收到終端發(fā)出的狀態(tài)請求時發(fā)出。

  • SIGUSR1
    留給用戶使用

  • SIGUSR2
    留給用戶使用

Exception Codes

  • 0xbaaaaaad

    用戶按住Home鍵和?音量鍵,獲取當前內存狀態(tài),不代表崩潰一也。

  • 0xbad22222
    VoIP應?用因為恢復得太頻繁導致crash巢寡。

  • 0x8badf00d
    在啟動、終?止應?用或響應系統(tǒng)事件花費過?長時間,意為“ate bad food”椰苟。

  • 0xc00010ff
    因為太燙了被干掉,意為“cool off”抑月。

  • 0xdead10cc
    因為在后臺時仍然占據系統(tǒng)資源(?比如通訊錄)被干掉,意為“dead lock”。

  • 0x2bad45ec
    應用程序違反安全規(guī)則被強制退出舆蝴。

  • 0xdeadfa11
    用戶強制退出,意為“dead fall”谦絮。(系統(tǒng)無響應時,用戶按電源開關和HOME鍵)

Refrence

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末洁仗,一起剝皮案震驚了整個濱河市挨稿,隨后出現的幾起案子,更是在濱河造成了極大的恐慌京痢,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篷店,死亡現場離奇詭異祭椰,居然都是意外死亡,警方通過查閱死者的電腦和手機疲陕,發(fā)現死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門方淤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹄殃,你說我怎么就攤上這事携茂。” “怎么了诅岩?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵讳苦,是天一觀的道長带膜。 經常有香客問我,道長鸳谜,這世上最難降的妖魔是什么膝藕? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮咐扭,結果婚禮上芭挽,老公的妹妹穿的比我還像新娘。我一直安慰自己蝗肪,他們只是感情好袜爪,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著薛闪,像睡著了一般辛馆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逛绵,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天怀各,我揣著相機與錄音,去河邊找鬼术浪。 笑死瓢对,一個胖子當著我的面吹牛,可吹牛的內容都是我干的胰苏。 我是一名探鬼主播硕蛹,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼硕并!你這毒婦竟也來了法焰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤倔毙,失蹤者是張志新(化名)和其女友劉穎埃仪,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體陕赃,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡卵蛉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了么库。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傻丝。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诉儒,靈堂內的尸體忽然破棺而出葡缰,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布泛释,位于F島的核電站滤愕,受9級特大地震影響,放射性物質發(fā)生泄漏胁澳。R本人自食惡果不足惜该互,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望韭畸。 院中可真熱鬧宇智,春花似錦、人聲如沸胰丁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锦庸。三九已至机蔗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甘萧,已是汗流浹背萝嘁。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扬卷,地道東北人牙言。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像怪得,于是被迫代替她去往敵國和親咱枉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容