常见 Exception Type 分析

通过下面的异常类型,我们也可以大概判断出是哪里出的问题,我觉得蛮好的,写给自己,方便以后查问题。

1、Exception Type

1)EXC_BAD_ACCESS

EXC_BAD_ACCESS:此类型的Excpetion是我们最长碰到的Crash,通常用于访问了不改访问的内存导致。一般EXC_BAD_ACCESS后面的"()"还会带有补充信息。

SIGSEGV: 通常由于重复释放对象导致,这种类型在切换了ARC以后应该已经很少见到了。

SIGABRT:  收到Abort信号退出,通常Foundation库中的容器为了保护状态正常会做一些检测,例如插入nil到数组中等会遇到此类错误。

SEGV:(Segmentation  Violation),代表无效内存地址,比如空指针,未初始化指针,栈溢出等;

SIGBUS:总线错误,与 SIGSEGV 不同的是,SIGSEGV 访问的是无效地址,而 SIGBUS 访问的是有效地址,但总线访问异常(如地址对齐问题)

SIGILL:尝试执行非法的指令,可能不被识别或者没有权限

2)EXC_BAD_INSTRUCTION

此类异常通常由于线程执行非法指令导致

3)EXC_ARITHMETIC

除零错误会抛出此类异常

2、Exception Code

0xbaaaaaad  此种类型的log意味着该Crash log并非一个真正的Crash,它仅仅只是包含了整个系统某一时刻的运行状态。通常可以通过同时按Home键和音量键,可能由于用户不小心触发

0xbad22222  当VOIP程序在后台太过频繁的激活时,系统可能会终止此类程序

0x8badf00d 程序启动或者恢复时间过长被watch dog终止

0xc00010ff  程序执行大量耗费CPU和GPU的运算,导致设备过热,触发系统过热保护被系统终止

0xdead10cc  程序退到后台时还占用系统资源,如通讯录被系统终止

0xdeadfa11  前面也提到过,程序无响应用户强制关闭

你可能感兴趣的:(常见 Exception Type 分析)