代码调试找错总结

1.拼写错误

2.如果c/c++,是否丢掉分号

3.条件边界错误

   找错时候,其它都找了,就尝试,如果出现条件边界时候的情况,程序会不会出问题,例子(如果asignment2[i])==-1,并且 tracks_undet[i]->skipped_frames ++到等于maximum_allowed_skipped_frames,然后下一个条件Cost2.size()>0 && Cost2[i + assignment2[i] * tracks_undet.size()] < dist_thres满足,就会出错):

      for (size_t i = 0; i < assignment2.size(); i++)  {

            if (assignment2[i] == -1 && tracks_undet[i]->skipped_frames < maximum_allowed_skipped_frames)
           {
               tracks_undet[i]->skipped_frames ++;
               tracks_undet[i]->Update(Point_t(), cv::Rect(), -1., false, max_trace_length);
               tracks_undet2.push_back(tracks_undet[i]);
           }
           else
           {
               if (Cost2.size()>0 && Cost2[i + assignment2[i] * tracks_undet.size()] < dist_thres)
               {
                   tracks_undet[i]->skipped_frames = 0;
                   tracks_undet[i]->Update(detections_low[assignment2[i]], rects_low[assignment2[i]], probs_low[assignment2[i]], true, max_trace_length);
                   tracks_det2.push_back(tracks_undet[i]);
               }
               else if(tracks_undet[i]->skipped_frames < maximum_allowed_skipped_frames)
               {
                   assignment2[i] = -1;
                   tracks_undet[i]->skipped_frames ++;
                   tracks_undet[i]->Update(Point_t(), cv::Rect(), -1., false, max_trace_length);
                   tracks_undet2.push_back(tracks_undet[i]);
               }

   解决办法,把不满足条件的去掉,类似于函数首先做参数合法检查。

    for 下面加一句:

     if (tracks_undet[i]->skipped_frames >= maximum_allowed_skipped_frames){ // delete to many frames not find obj
               continue;
           }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值