Benchmark库的建立06:变量溢出 Bug

Bug类型

  1. 变量溢出 Bug

正确版本程序

  1. apps/benchmark/TestOverflow

程序描述

  1. 传感器每0.1S采集数据并保存到的buffer[2]数组中;
  2. 传感器采集数据成功,切换LED0的状态,并提交
    computeTask任务,采集失败则切换LED1的状态;
  3. 任务computeTask中计算结果如果大于uint16_t则发生溢出,切换LED2的状态。

Avrora运行程序

  1. cd /opt/tinyos-2.x/apps/benchmark/TestOverflow
  2. alias avrora=’java -jar avrora-beta-1.7.113.jar -colors=false -banner=false’
  3. SENSORBOARD=mts300 make mica2
  4. mv build/mica2/main.exe tof.elf
  5. avrora -platform=mica2 -monitors=leds -seconds=2 -simulation=sensor-network -nodecount=1 -sensor-data=”“light”“:0:. tof.elf

这里写图片描述

运行结果分析(正确版本)

  1. LED0切换结果正确;
  2. LED1、LED2不发生切换。

bug版本程序

  1. /apps/benchmark/bm_TestOverflow

程序修改的部分

  1. computeTask任务中将简单的数据求和改成求积运算。

bug的显现条件

  1. 运算结果大于uint16_t的最大取值时

Bug症状

  1. LED0正常切换。LED1不切换,LED2也会发生切换(表示计算结果发生溢出);

  2. 运行net.tinyos.tools.PrintClient程序会显示变量溢出信息:Error:Variable Overflow!

备注

  1. 正确版本的TestOverflow程序也有可能出现
    Bug,只不过求和溢出的概率比较低而已。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值