小bug,大故障

众里寻他千百度,蓦然回首他在灯火阑珊处!

即使有10多年的老手,有时候BUG也就悄悄地来了。挥一挥衣袖,就是不悄悄地走。灯火阑珊的时候才找到。

早上在一个没有装极限位的运动平台,调试一段代码,第一个循环体,死活都会进去。明明已经满足退出条件了。

一开始还以为内存被其他线程破坏了,定位无果。debug的时候发现条件的确是false的。为什么还进入花括号呢?

浪费20分钟排查问题,结果突然发现角落里的";",定位到原因。

while(条件)后面多出了个分号。导致一个循环体代码在“{”前就已经结束。

此时如果条件=false,则该语句等于什么都没有做。直接进入到后面的花括号代码。

如果条件=true;则成了死循环;无法到达“{”后面的代码。

-------------------------------------------------

对于此等问题;除了人为细心点,另外一个是可以使用Splint等静态代码分析工具。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值