Visual 2012 程序调试方法
一、打开visual操作页面,需要用到的图标:
二、不同图标的用法:
:开始调试不执行,一般编译成功后,可以查看运行结果;
: 启动调试,一般编译成功后,点击会出现闪现,看不出运行结果。在调试时可以设置完断电后运行使用。
:监视,通常软件会自动弹出监视框,如下(系统未自动弹出下框时,单击即可弹出):
:调试的中断、停止调试、重新启动,都是用于结束调试或者重新开始调试时使用的。
:显示下一条语句。
:逐语句进行调试,即从程序的第一条语句开始,每个语句都检查一遍。
:逐过程进行调试,即在循环体中按照循环次数做大体检查,
:跳出,即跳出逐过程或者逐语句的检查。
三、调试的使用方式:
1、设置断点:在系统左侧页面边框内,用鼠标在你想要查询的语句前单击,出现红色圆点,即为断点。
2、设置好断点后,点击启动调试,与调试相关的图标就被自动点亮
由
变为
3、通过逐语句、逐过程
、跳出
、来完成程序的调试;
4、使用调试时,可以通过页面左侧黄色箭头观察调试进行到哪一步;
可以通过观察监视框内变量变化,检测出错步骤。
四、举个例子说明:
对下列折半查找程序进行调试,使其输出正确的结果。
#include <stdio.h>
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,arr[i]));
}
return 0;
}
结果分析:
输出结果应该是:0,1,2,3,4,5,6,7,8,9
但是程序运行结果则是:
由此可见程序运行出现问题,故需要对程序进行相应的调试,使其输出正确的结果。
由题可进行分析折半查找:
给定的数:1 3 5 7 9 10 11 12 13 15
下 标:0 1 2 3 4 5 6 7 8 9
1 L M H
2 L m H
3 (lmh)
调试时发现监视输出的各值分别为:
给定的数:1 3 5 7 9 10 11 12 13 15
下 标:0 1 2 3 4 5 6 7 8 9
1 L M H
2 L m H
3 L m H
4 (m)L h
进而分析,可知需调整m位置;调整后,程序为:
#include <stdio.h>
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-1;
}
else
{
low = mid+1;
}
}
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,arr[i]));
}
return 0;
}
最后输出结果为:
再输入边缘数进行检测: