深入分析Android native exception框架

1. 用户空间产生异常
    d()函数里对空指针赋值,由于0地址属于非法地址,访问时会被MMU(内存保护单元)拦截,并发送abort信号给CPU:

    ARM CPU有1张异常向量表响应对应的异常(可以存放在0x00000000或0xFFFF0000处,目前配置为0xFFFF0000),访问0地址对应的是data abort,如果程序跑飞则对应的是prefetech abort:

    此时从用户态切换到了内核态,在内核态,会将当前的上下文保存并记录异常的地址和类型,内核处理完成后在返回用户态。
    以下是对应的异常向量表的汇编代码(对应的代码:alps/kernel/arch/arm/kernel/entry-armv.s):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值