iOS C异常信号类型(SIGSEGV...)

476 阅读1分钟

iOS处理异常时,有两种, 一种是对于系统崩溃而引起的程序异常退出,可以通过NSSetUncaughtExceptionHandler机制捕获; 另一种就是处理信号异常,有多种信号类型,在wiki中有比较详细的介绍:zh.wikipedia.org/wiki/Unix%E…

常用的几种如下所示:

SIGSEGV(分段故障)

访问无效的内存地址。 该地址存在,但是您的程序无法访问该地址。

SIGBUS(总线错误)

访问无效的内存地址。 该地址不存在,或者对齐方式无效。 总线发生错误时,进程接收到一个SIGBUS信号。举例来说,存储器访问对齐或者或不存在对应的物理地址都会产生SIGBUS信号

SIGFPE(浮点异常)

无效的算术运算。 尽管有名称,但可以与整数运算有关。

SIGPIPE

管道破损。 当一个进程试图写入一个没有连接到另一端进程的管道时,SIGPIPE信号会被发送到该进程。

SIGILL

非法的处理器指令。

SIGTRAP

调试器相关

SIGABRT

SIGABRT 和 SIGIOT 信号能让程序异常终止(abort)。 该信号通常是由进程自身调用 [C标准函数库]"C++标准库") 的 abort() 函数来触发, 但它也可以像其它信号一样由外部发送给进程。

信号类型.png