
- 一.调试技巧
- 二.错误归类和更改过程
- 一.代码本身的问题
- 二.逻辑错误
- 总结
F5
启动调试,经常用来直接跳到下一个断点处。
F9
创建断点和取消断点
断点的重要作用,可以在程序的任意位置设置断点。
这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。
F5一般与F9一并使用,在下列例子中会提到具体使用方法
F10
逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
跳过自定义函数
F11
逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是 最长用的)。
不跳过自定义函数
CTRL + F5
二.错误归类和更改过程 一.代码本身的问题开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
例:
int main()
{
double a, b, c;
scanf("%d %d %d", &a, &b, &c);
double deta = b * b - 4 * a * c;
double x1, x2;
if (deta == 0)
{
x1 = (-b) / (2 * a);
printf("x1=x2=%.5lf", x1);
}
if (deta > 0)
{
x1 = (-b - sqrt(deta)) / (2 * a);
x2 = (-b + sqrt(deta)) / (2 * a);
if(x1>x2)
printf("x1=%.5lf;x2=%.5lf", x2,x1);
else
printf("x1=%.5lf;x2=%.5lf", x1, x2);
}
else
{
printf("No answer!");
}
return 0;
}
运行起来发现,本身是能运行起来的,并且逻辑也是对的,但答案依然是错误的,我们能通过调试来发现里面的问题,
按下F10,打开监视窗口时,我们发现a,b,c的值并不符合我们的预期,再看程序执行到了scanf("%d %d %d", &a, &b, &c);,我们发现错误在此。
例:
int main()
{
int i = 0;
int sum = 0;//保存最终结果
int n = 0;
int ret = 1;//保存n的阶乘
scanf("%d", &n);
for(i=1; i<=n; i++)
{
int j = 0;
for(j=1; j<=i; j++)
{
ret *= j;
}
sum += ret;
}
printf("%dn", sum);
return 0;
}
结果:
经过调试,我们发现ret值的异常
突然我们想起了要每次都要为ret重置为1
所以我们改正了代码
int main()
{
int i = 0;
int sum = 0;//保存最终结果
int n = 0;
int ret = 1;//保存n的阶乘
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret = 1;
int j = 0;
for (j = 1; j <= i; j++)
{
ret *= j;
}
sum += ret;
}
printf("%dn", sum);
return 0;
}
总结
通过F10开始调试,再通过监视窗口观察出问题
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)