異常處理相關(guān)資料收集

漫談iOS Crash收集框架
Handling unhandled exceptions and signals
plcrashreporter

注意:因?yàn)橛布a(chǎn)生的信號(hào)(通過(guò)CPU陷阱)被Mach層捕獲,然后才轉(zhuǎn)換為對(duì)應(yīng)的Unix信號(hào);蘋(píng)果為了統(tǒng)一機(jī)制,于是操作系統(tǒng)和用戶(hù)產(chǎn)生的信號(hào)(通過(guò)調(diào)用kill和pthread_kill)也首先沉下來(lái)被轉(zhuǎn)換為Mach異常,再轉(zhuǎn)換為Unix信號(hào)?!菊裕?a target="_blank" rel="nofollow">http://www.cocoachina.com/ios/20150701/12301.html 】

ios不響應(yīng)signal處理函數(shù)?原因是xcode編譯運(yùn)行了程序,如果直接發(fā)送signal,xCode會(huì)直接收到信號(hào)立刻中斷程序運(yùn)行,直接跳過(guò)signal處理函數(shù)。需要手動(dòng)停止xCode運(yùn)行的程序,再在模擬器 運(yùn)行,發(fā)送了signal,這樣才可以進(jìn)入了signal處理方法!【摘自:http://blog.csdn.net/u011615945/article/details/38059947

如果同時(shí)有多方通過(guò)NSSetUncaughtExceptionHandler注冊(cè)異常處理程序,和平的作法是:后注冊(cè)者通過(guò)NSGetUncaughtExceptionHandler將先前別人注冊(cè)的handler取出并備份,在自己handler處理完后自覺(jué)把別人的handler注冊(cè)回去,規(guī)規(guī)矩矩的傳遞。不傳遞強(qiáng)行覆蓋的后果是,在其之前注冊(cè)過(guò)的日志收集服務(wù)寫(xiě)出的Crash日志就會(huì)因?yàn)槿〔坏絅SException而丟失Last Exception Backtrace等信息。(P.S. iOS系統(tǒng)自帶的Crash Reporter不受影響)【摘自:http://www.cocoachina.com/ios/20150701/12301.html

對(duì)于多方通過(guò)NSSetUncaughtExceptionHandler注冊(cè)異常處理的情況,我實(shí)際中可行的做法是

static NSUncaughtExceptionHandler *currentUncaughtExceptionHandler;
currentUncaughtExceptionHandler = NSGetUncaughtExceptionHandler();
/*
 handle you runloop and handle exception
 **/
//NSSetUncaughtExceptionHandler(currentUncaughtExceptionHandler);//試了這種寫(xiě)法,但最終沒(méi)執(zhí)行currentUncaughtExceptionHandler,然后改成下面的寫(xiě)法了
NSSetUncaughtExceptionHandler(NULL);//擔(dān)心不重置為NULL會(huì)出現(xiàn)handle死循環(huán)
currentUncaughtExceptionHandler(exception);

看了幾篇異常處理相關(guān)的博客,多半都是獲取backtrace,但是獲取的信息很有限,并不能獲取crash發(fā)生時(shí)多個(gè)線程的信息,導(dǎo)致有些時(shí)候很難定位到問(wèn)題所在,plcrashreporter做的就很好,看來(lái)以后有空還得研究下plcrashreporter
源碼了。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 比較好的轉(zhuǎn)載:http://www.cocoachina.com/ios/20151218/14748.html轉(zhuǎn)...
    liudhkk閱讀 983評(píng)論 0 2
  • 轉(zhuǎn)載(漫談 iOS Crash 收集框架) 前言 很早以前就和念茜認(rèn)識(shí),念茜不但技術(shù)功底扎實(shí),而且長(zhǎng)得很漂亮,說(shuō)她...
    狂風(fēng)無(wú)跡閱讀 3,582評(píng)論 1 11
  • 以下為文章正文,如果覺(jué)得有用,歡迎給她打賞。 為了能夠第一時(shí)間發(fā)現(xiàn)程序問(wèn)題,應(yīng)用程序需要實(shí)現(xiàn)自己的崩潰日志收集服務(wù)...
    赤色追風(fēng)閱讀 2,611評(píng)論 1 11
  • 來(lái)源:程序媛念茜的博客 Crash日志收集 為了能夠第一時(shí)間發(fā)現(xiàn)程序問(wèn)題,應(yīng)用程序需要實(shí)現(xiàn)自己的崩潰日志收集服務(wù),...
    幸福的魚(yú)閱讀 1,253評(píng)論 0 2
  • 本文整理下最近對(duì)于crash采集的總結(jié),和踩過(guò)的坑。 CrashReporter 首先,iOS有自己的CrashR...
    談Xx閱讀 20,593評(píng)論 15 66

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