Mach异常与Unix信号

前言

日志收集服务,成熟的开源项目很多,如 KSCrash,plcrashreporter,CrashKit 。追求方便省心,对于保密性要求不高的程序来说,也可以选择各种一条龙Crash统计产品,如 Crashlytics,Hockeyapp ,友盟,Bugly 。

正文

Mach异常是什么?

Mach是一个XNU的微内核核心,Mach异常是指最底层的内核级异常,被定义在

Exception Type:         EXC_BAD_ACCESS (SIGSEGV)//Mach层的EXC_BAD_ACCESS异常,在host层被转换成SIGSEGV信号投递到出错的线程。
Exception Subtype:      KERN_INVALID_ADDRESS at 0x041a6f3

Mach异常是如何与Unix信号建立联系?

所有Mach异常都在host层被ux_exception转换为相应的Unix信号,并通过threadsignal将信号投递到出错的线程。

iOS中的 POSIX API 就是通过 Mach 之上的 BSD 层实现的。

你可能感兴趣的:(iOS,进阶)