[求助] 单步调试和直接运行结果不一样的现象!

面纱如雾   2014-8-29 11:18 楼主
1.jpg
我在这一步设置一个断点,此时我画出来的IP数组为一串数字。
2.jpg
我现在点击next statement,跑到绿色的地方,发现这个IP没有变化。
3.jpg
我重新运行程序,再次跑到断点处,IP还是这个IP
4.jpg
我在刚才单步的地方再次设置个断点,直接运行过去,发现IP变化了,这是为什么?
我单步点的是这个:
5.jpg

回复评论 (3)

单步调试和直接运行最大的区别就是时间不同,单步调试时你可以把每个步骤的时间拉伸到无限久,而直接运行时间会很短。
看不出你的程序是怎么写的,感觉是在某处延时不够。
点赞  2014-8-29 11:26
这个IP改变后的内容是我第一个断点处发送的内容“ SendString1("AT%IPOPEN=\"TCP\",");  ”,但是我的ip获取代码是这样的:
void Get_ip(uchar *a,uchar *ip)
{
   int i;
   k=0;  
   for(i=39;i<54;i++)
  {
     if((i-39)<15)
     {
       if((a=='.')||((a<58)&&(a>47)))
       *ip=a;
       //Delay_Nms(100);
       ip++;//ip推进
       k++;//长度推进
     }
   }
}


调用起来是这样的:
Get_ip(RxBuf1,IP);
而且这条调用程序执行完后(IP都已经获得了)才执行我图上的那条SendString1("AT%IPOPEN=\"TCP\",");,里面的数据怎么会又跑进去?
点赞  2014-8-29 13:00
引用: qiushenghua 发表于 2014-8-29 11:26
单步调试和直接运行最大的区别就是时间不同,单步调试时你可以把每个步骤的时间拉伸到无限久,而直接运行时 ...

我把图上两个断点之间的延时去掉居然就正常了。。。。。。。。。。
点赞  2014-8-29 13:44
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复