keil利用Breakpoints追踪内存值异常修改分析说明

在开发过程中,经常会遇到内存值被异常篡改的情况。而且,篡改者往往并不是你当前所正在进行调试的部分(即内存异常篡改其实早就存在,只不过现在才凸显出来),这样问题很难跟踪,故利用keil的这一特性,追踪问题。

以下项目举例说明

1. 用电设备,A相电压偏差极值显示63.25%,而此时额定电压为220v,A相单相上电,偏差值不应
   有这么大偏差值计算公式为:

    ΔU = ((U - Un) / Un) * 100%;

    式中:△U--电压偏差百分比;U一实际电压:Un电网标称电压。

2. 观察ac_data_memory中相应数据显示确实为这么大,考虑数据调试过程中异常,故对到下一
   日,对时后,数据变为0,1分钟后变为60+%(其实是有做统计数据,但此时并未往这方面想)。

3. 经过2的分析后,确定一定是有某个地方对这块内存操作了,故使用推荐方法跟踪是哪个地方在
   操作内存。

4. 查看内存地址:

内存地址

5. 添加此内存地址(0x20017B27)到Breakpoints,Debug->Breakpoints,如:

breakpoints

6. 添加步骤如下图:

添加步骤

7. 全速运行,当访问者修改这片内存时,程序会中断,这时断点的位置就时访问者。如:

全速运行结果

8. 问题定位。

注意事项

使用中并不能100%命中,不能过分依赖。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值