-
EXC_BAD_ACCESS
访问一个已经释放的对象,或者向他发送消息时,EXC_BAD_ACCESS就会出现。造成EXC_BAD_ACCESS最常见的原因是,对属性用错了所有权修饰符,这会导致对象被释放。 -
SIGSEGV
段错误信号(SIGSEGV)是操作系统产生的一个严重的问题,属于EXC_BAD_ACCESS的子类型,当硬件出现错误,访问不可读的内存地址或者向受保护的内存地址写入数据时,就会发生这个错误。这种错误并不常见,而导致这种错误最常见的原因是不正确的类型转换。 -
SIGBUS
总线错误信号(SIGBUS)代表无效内存访问,即访问额内存是一个无效的内存地址。也就是说,那个地址指向的位置根本不是物理内存地址。和SIGSEGV一样,SIGBUS也属于EXC_BAD_ACCESS的子类型。 -
EXC_ARITHMETIC
当要除零时,应用会收到EXC_ARITHMETIC信号。这个错误很容易处理。 -
SIGILL
SIGILL代表SIGNAL ILLEGAL INSTRUCTION(非法指令信号)。当在处理器上执行非法指令时,它就会发生。执行非法指令是说,将函数指针传给另一个函数时,该函数指针由于某种原因是坏的,指向了一段已经释放了的内存或者一个数据段。 -
SIGABRT
SIGABRT代表SIGNAL ABORT(中止信号)。当操作系统发现不安全的情况时,它能够对这种情况进行更多的控制;必要的话,它能要求进程进行清理工作。通常UIKit框架在特定的前提条件没有满足或者一些其他情况出现时候调用C函数abort(由它来发送此信号)。当SIGABRT出现时,控制台通常会输出大量的信息,说明哪里出错。由于SIGABRT是可控制的,所有可以再LLDB控制台上输入bt命令打印出回溯信息。 -
看门狗超时
这种崩溃容易分辨,错误码固定是0x8badf00d
,可以读作(Ate Bad Food)。在iOS中,经常出现在执行一个同步网络调用而阻塞主线程的情况。
网友评论