美文网首页signal
iOS异常捕捉简介

iOS异常捕捉简介

作者: even林0 | 来源:发表于2017-05-25 10:12 被阅读51次

    iOS系统自带的 Apple’s Crash Reporter 记录在设备中的Crash日志,Exception Type项通常会包含两个元素:
    Mach异常如 :EXC_BAD_ACCESS
    Unix信号如 : SIGSEGV。
    Exception Type: EXC_BAD_ACCESS (SIGSEGV)
    Exception Subtype: KERN_INVALID_ADDRESS at 0x041a6f3

    1. 所有Mach异常都在host层被ux_exception转换为相应的Unix信号,并通过threadsignal将信号投递到出错的线程。
    2. EXC_BAD_ACCESS (SIGSEGV)表示的意思是:Mach层的EXC_BAD_ACCESS异常,在host层被转换成SIGSEGV信号投递到出错的线程。既然最终以信号的方式投递到出错的线程,那么就可以通过注册signalHandler来捕获信号: signal(SIGSEGV,signalHandler);
    3. 正如上述所说,可以通过捕获Mach异常、或Unix信号两种方式来抓取crash事件,于是总结起来实现方案就一共有3种。
      1. Mach异常方式
      2. Unix信号方式 : signal(SIGSEGV,signalHandler)
      3. Mach异常+Unix信号方式

    相关文章

      网友评论

        本文标题:iOS异常捕捉简介

        本文链接:https://www.haomeiwen.com/subject/rzvaxxtx.html