编程中调试的作用

所谓编程中的调试,大致就如下面所展示的:

#include<stdio.h>

#include<math.h>


//调试,debug,bug
//1、将运行光标定位到Max函数内部
//2、查看a,b变量的值
//printf("%d\n",Max(10,20));
int Max(int a,int b)
{
if(a >  b)
{
return a;
}
else
{
return b;
}
}


//在长度为len的arr数组中,查找数据key
//成功返回下标,失败返回-1
int BinSearch(int *arr,int len,int key)
{
int low = 0;
int high = len-1;
int mid;
while(low <high)
{
mid = (low+high)>>1;//mid = (low+high)/2;
if(arr[mid] == key)
{
return mid;
}
else if(arr[mid] >= key)
{
high = mid;
}
else
{
low = mid;
}
}
 return -1;

}


int main()
{
int arr[10] = {1,3,5,7,9,10,11,12,13,15};
for(int i=0;i<10;i++)
{
printf("%d\n",BinSearch(arr,10,0));
}


printf("%d\n",BinSearch(arr,10,0));
printf("%d\n",BinSearch(arr,10,8));
printf("%d\n",BinSearch(arr,10,100));


如果按照以上方式输入代码,那么将输出以下内容:




我们可以清晰的发现,在应该出现数字 9 的地方数字却消失不见了!!那么数字 9 到底去哪里了呢???!!!

在这个时候 如果我们进行调试的话,我们就可以很直观的看出问题出在哪里了。


因为已经知道了是在数字 9 出现的地方出现错误,所以我们可以直接令i等于9,然后进入该函数。


然后依次点击逐语句,并观察监视1中各个数据的变化及其规律。

当其运算到这一步时:


!!!!突然间,我们会发现,如果high=mid,或者low=mid,这样的运算是没有意义的,应该将表达式修改为high=mid+1,将low=mid,修改为low=mid-1,只有这样,运算才能拥有它的意义。

修改之后我们可以看到。。。。。。!!!!!!似乎出现的并不是我们想要的结果。

但我们一定不能灰心,毕竟真理就是在不断失败后所得出的嘛!!!!

我们重新观察一下这个新的错误,可以发现这一次在第一个数的位置就已经出现错误了,所以我们重新对它进行调试,在i=0的时候就进入函数内部,得到该图:


然后依次进行逐语句,观察其数据的变化,可以很清楚的找到规律。

不禁可以发现,如果按照一开始定义的 while(low<high),那将会少了一步运算,所以我们会马上想到应该将以前定义的表达式改为while(low<=high),然后运行程序,你会发现。。。。。。你成功了!!!!1



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Crestron编程调试是指对Crestron控制系统的程序进行调试和优化的过程。 在进行Crestron编程调试时,首先需要通过Crestron编程软件对程序进行编写和组织。在编程过程,需要注意编程语法的正确性、逻辑的合理性以及代码的简洁性,以避免出现不必要的错误和问题。 在编程完成后,需要进行调试操作。首先,通过对数据和信号的跟踪和分析,找出可能存在的错误和问题所在。可以利用Crestron系统调试工具和功能,如实时监控和日志记录,以及与设备和模块的通信测试,来排查和解决故障。 在调试过程,可以通过运行程序、模拟设备和模块的操作等方式,来验证程序的正确性和稳定性。同时,需要注意观察系统的反应和输出结果,以发现可能的错误和不一致之处。 调试过程常见的问题包括设备连接错误、信号传输问题、代码逻辑错误等。对于设备连接错误,可以检查物理连接和网络设置,确保设备正确连接并具有正确的权限。对于信号传输问题,可以检查设备之间的通信协议和参数设置,确保信号能够正确传递和解析。对于代码逻辑错误,可以逐步排查并修改出错的代码部分,重新测试和验证。 总结来说,Crestron编程调试是一个繁琐但必要的过程,通过仔细的观察、分析和修正,可以提高系统的稳定性和可靠性,确保Crestron控制系统能够正常运行和满足用户需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值