debug往事

刚来公司不久,生产线上有个bug。表现为一条正常的心率曲线会有个别点不在线上,而是偏离了这条线(姑且定义为掉点吧)。
而且随着时间的推移,这些偏离的点越来越多。
debug思想:1可疑地方在上送的数据本身就是错的或2上送的数据是错的但画错了。
后者不太可能,因为画线的方法写好了,较底层。我先测试上送的数据,测斜率变化,发现斜率变化没有很大的跳动。
认为上送的数据也是对的了。那问题还是在上送数据生的处理后面。再发再还有个缓存池缓存上送的数据的,会不会从这里出问题了呢。
同样的方法测斜率,发现也是对的。处理数据没问题。再后来发现原来画线和处理数据是由两个不同的线程处理的,画线的线程控制着缓存池的下标
定时从池里取数据并且下标index++。而缓存池的写线程是定时的,隔那么多毫秒往池中写一个上送过来的数据,写入的数据位置下标正是画线控制的下标index
那么问题来了,这两个线程可能不同步,当画线线程快于存数据线程时,缓存池的下标在写过程就出现跳跃的情况,此时缓存池被跳过的位置保留的正是上次留下的数据
当然出问题了。如何解决呢。采用插值法,写线程缓存上次写数据的下标,当画线线程从这里取数据快过缓存池上次缓存位置时,直接用上一次的数据而不是垃圾数据。
这个bug前后花了四天时间才解决,纪念一下。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值