MemManage_Handler 问题的解决思路

1、问题

在做一个安全类项目时发现,软件在运行一段时间后会进入"MemManage_Handler",遂开始了一系列查找。

2、解决

(1)查看堆栈数据

查堆栈的数据,发现堆栈也被破坏了,看不出来是执行哪个任务执行导致的问题。

(2)查看内核异常报告

通过FaultReports 异常报告发现,是由于发生了Memory ManagementFault中的IACCVIOL错误,导致HardFault_Handler发生,即“企图从不允许访问的区域取指令”,

(3)自定义函数运行记录函数定位异常位置

BSP_DB_FuncRun函数用于执行并记录函数指针

例如:

BSP_DB_FuncRecord函数用于记录运行函数名称

例如:BSP_DB_FuncRecord("BSP_HC165_Handle")

(4)异常抓取

可以将需要运行的函数通过这两个函数处理后执行,就可以记录出现错误前所执行的函数,可以在debug状态下查到出错前执行的函数,或者在运行状态下,在进入错误后,将异常函数打印到日志中。最终查找并解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值