数组越界导致看门狗复位案例分析

文章讲述了产品在新增功能测试中遇到看门狗复位问题,经过故障分析发现是由于反向电能数据定义数组大小不足导致。解决措施包括修改数组初始化为指针类型并检查同类操作。总结建议强调了避免数组操作指针以防止内存溢出和程序跑飞。
摘要由CSDN通过智能技术生成

问题现象

近期,产品新增功能测试发现运行一段时间后一直复位,查看复位记录,解析为内部看门狗复位。
在这里插入图片描述

问题分析

故障复现:
拿到故障样机后,读取电能记录,发现T10费率电能为0 ,其他电能都正常, 如下图:
在这里插入图片描述
单步跟踪,发现一段程序运行完毕,返回后第一条指令执行完毕后,程序跑飞,接着就产生了看门狗复位。如下所示。 肯定不是这个语句问题,应该是上一段功能代码有故障。
在这里插入图片描述
继续查找,发现下述语句屏蔽后,故障消失。
在这里插入图片描述
进一步测试发现,只有累计反向电能才会复现故障, 正向电能工作正常
在这里插入图片描述
正向跟反向 是同一段代码。
T5~T12 费率电能累加 也是一段代码。 仿真发现,出现异常时,该语句执行正常,如下:
在这里插入图片描述
再往下看,有反向电能调用接口,仔细查看发现数据定义不够:
在这里插入图片描述
定义数组大小只有5
在这里插入图片描述

修改数组大小到8后,故障消失。

解决措施

1、修改数组初始化定义,改为指针类型。
2、搜查同类操作,一并修改。

总结建议

数组越限可能导致内存溢出以及程序跑飞,再用到指针时,应避免用数组操作指针,改用指针变量指向数组更为规范。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值