原文鏈接:https://blog.csdn.net/mingC0758/article/details/98659480
發(fā)生在系統(tǒng)內(nèi)核層(Mach Exception)汇荐,可以通過void(signal(int, void ()(int)))(int)捕捉。
Exception Code
0x8badf00d 讀作“ate bad food”,程序啟動或者恢復(fù)時間過長被watch dog終止。
0xdead10cc 讀作“dead lock” 表示應(yīng)用因為在后臺運行時占用系統(tǒng)資源挑庶,如通訊錄數(shù)據(jù)庫不釋放而被終止。
0xbad22222 該編碼表示 VoIP 應(yīng)用因為過于頻繁重啟而被終止范舀。
0xdeadfa11 讀做 “dead fall”! 該代碼表示應(yīng)用是被用戶強制退出的。根據(jù)蘋果文檔, 強制退出發(fā)生在用戶長按開關(guān)按鈕直到出現(xiàn) “滑動來關(guān)機”, 然后長按 Home按鈕娃圆。強制退出將產(chǎn)生 包含0xdeadfa11 異常編碼的崩潰日志, 因為大多數(shù)是強制退出是因為應(yīng)用阻塞了界面悦屏。
0xbaaaaaad 用戶按住Home鍵和?音量鍵,獲取當(dāng)前內(nèi)存狀態(tài),不代表崩潰
0xc00010ff 讀作“cool off” 因為太燙了被干掉
UNIX Signal和Mach Exception其實是同一份異常在不同層次的處理。
SIGALRM–程序超時信號
SIGTERM–程序Kill中止信號
SIGSTOP–程序鍵盤中止信號
SIGKILL–程序結(jié)束接收中止信號
SIGHUP–程序終端中止信號
SIGINT–程序鍵盤中斷信號
SIGABRT–程序中止命令中止信號
SIGILL–程序非法指令信號
SIGSEGV–程序無效內(nèi)存中止信號
SIGFPE–程序浮點異常信號
SIGBUS–程序內(nèi)存字節(jié)未對齊中止信號
SIGPIPE–程序Socket發(fā)送失敗中止信號
GitHUb上有UncaughtExceptionHandler吼鳞,其中捕捉這類系統(tǒng)內(nèi)核層的Crash使用的方法:
void InstallUncaughtExceptionHandler(void)
{
signal(SIGHUP, SignalHandler);
signal(SIGINT, SignalHandler);
signal(SIGABRT, SignalHandler);
signal(SIGILL, SignalHandler);
signal(SIGSEGV, SignalHandler);
signal(SIGFPE, SignalHandler);
signal(SIGBUS, SignalHandler);
signal(SIGPIPE, SignalHandler);
}
如果本文對你有所幫助看蚜,記得點擊一下喜歡哈