一、APP崩溃的几种情况:
- APP启动闪退
- 切换到后台再次打开时APP重新启动
- 无响应
- 打开某一个界面时突然退出
二、为什么会出现崩溃:
- 操作系统异常和中断
- 崩溃是CPU对发生异常的一种显式反应,CPU的异常处理是基于中断来完成的。中断是CPU暂停正在执行的程序,保留现场后转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。
- 在操作系统相关资料中介绍:中断(interrupt)和异常(exception)在不同的CPU架构里有不同的含义。
比如在Intel架构中,中断处理的入口由操作系统内核中的中断分配表定义(interrupt dispatch table, IDT),IDT中有255个中断向量,其中前20个定义为异常(exception)的处理入口,即中断包含异常。
而在ARM架构中,中断处理的入口则是在异常向量(exception vector)中,8个异常向量里边有3个是中断相关的,即异常包含中断。
不管如何界定中断和异常,CPU发生异常时,都会将控制权从异常前的程序交给异常处理程序,而且CPU将获得 不会更低 的执行权利,比如执行用户态的应用程序发生异常,CPU将切换到内核态,并执行对应的异常处理程序。经典的CPU五级流水线中一条指令的生命周期为[取指、译码、执行、访存、写回],每个阶段都可能出现CPU异常,比如在ARM架构下:
在“执行”阶段产生的“数据中止”异常:若处理器 数据访问指令 的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。
在“取指”阶段产生的”