APP崩溃以及为什么会出现崩溃

文章详细阐述了APP崩溃的几种常见情况,包括启动闪退、后台重新启动、无响应和界面退出。崩溃通常是由于操作系统异常或中断,CPU在执行异常时会切换到更高权限状态执行异常处理程序。文中还列举了典型的崩溃场景,如看门狗机制导致的超时终止、野指针引起的未定义行为以及多线程操作中的死锁问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、APP崩溃的几种情况:

  1. APP启动闪退
  2. 切换到后台再次打开时APP重新启动
  3. 无响应
  4. 打开某一个界面时突然退出

二、为什么会出现崩溃:

  1. 操作系统异常和中断
  • 崩溃是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架构下:
    在“执行”阶段产生的“数据中止”异常:若处理器 数据访问指令 的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。
    在“取指”阶段产生的”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值