本章介绍的是有关VS中调试的内容,同时我们会了解到bug,调试以及debug和release等相关的知识,同时,本章也会带着大家去调试几个代码,让大家更好的理解调试的作用和方法。
1.bug和调试
相信大家对于这个词一定不陌生,平时带游戏时我们也会常常用到这个词。
2.Debug和Release
不知道大家在使用VS时有没有注意到,在VS顶部有Debug和Release这个选项
它们代表什么意思呢?
3,VS调试快捷键
在调试之前,我们要将VS设置为Debug,这样我们才能开始调试,同时我们还要记住几个快捷键,方便我们调试。
4.调试过程
接下来我们开始调试,看以下代码
int Max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int max=Max(a,b);//选出二者之间的较大值
printf("%d", max);
return 0;
}
如果我们要从最开始往下调试,首先我们先按下F11或者F10
我们发现有一个箭头的东西,这个箭头代表我们调试到了哪一步,之后我们继续按F10或者F11
我们发现当箭头走到scanf时消失了,这时候提示我们输入数据,此时,就可以输入我们想要测试的数据用例了。
当我们输入完数据并按下回车就可以继续调试了。
这时候我们发现有一个判断大小的函数,此时我们就不能和上述一样,无脑按F10与F11了,当我们不想进入函数,直接调用,我们就可以直接按下F10
可是,当我们想要进入函数观察,就可以按下F11.
这时候有人会问,那我每次调试都要从头开始,我想从这个64行代码开始,有没有什么办法,
此时F9和F5的作用就来了。
当我们想要从哪一行代码开始时,我们可以选定这一行代码按下F9,就出现了断点了,此时我们按下F5就可以从这段代码开始,之后按下F10或F11调试就可以了。
断点的设置我们也可以用鼠标来进行,只需要点击代码左侧就可以了。
断点可以设置多个
只需再次按下F5就可以跳转道下一个断点,有人会问,为什么不从51行开始,而是从64开始呢?
这是因为所有调试首先都是从main函数开始的,之后main函数中有调用自定义函数时,F5才能跳转到有断点函数中,即使自定义了一个函数,main函数中没有调用,即使在自定义函数设置了断点,也不会跳转过去。
5.监视和内存观察
在调试的过程中我们,如果要观察代码执⾏过程中,上下⽂环境中的变量的值,有哪些⽅法呢?
我们先来看看这段代码
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int num = 100;
char c = 'w';
int i = 0;
for (i = 0; i < 10; i++)
{
arr[i] = i;
}
return 0;
}
1.监视
当我们想要看看arr里面存储的是什么,我们怎么看呢?
首先按下F11或F10开始调试,在菜单栏中【调试】->【窗⼝】->【监视】,打开任意⼀个监视窗⼝,输⼊想要观察的对象就⾏。
为什么arr里面不是0而是随机数呢?因为此时我们程序还没有走完这一步,当我们继续按下F10或F11就可以了。
同样我们也可以看看num,c中存储的数据
2.内存
内存的查看步骤和监视一样
![](https://img-blog.csdnimg.cn/direct/311e11406f4346e7ae36c6593363aaf0.png)
![](https://img-blog.csdnimg.cn/direct/67aff389205e461a88bda9e7d0886960.png)
![](https://img-blog.csdnimg.cn/direct/cbeae325b8924411a478cc318c945c1f.png)
![](https://img-blog.csdnimg.cn/direct/4a9e44e982c04cefa6c9ffdb641963a1.png)
6.调试举例
int main()
{
int n = 0;
int i = 1;
int sum = 0;
int ret = 1;
for (n = 1; n <= 10; n++)
{
for (i = 1; i <= n; i++)
{
ret *= i;
}
sum += ret;
}
printf("%d\n", sum);
return 0;
}
我们运行一下
![](https://img-blog.csdnimg.cn/direct/5b8b21d251cc42a6a4199d81d2354ebe.png)
![](https://img-blog.csdnimg.cn/direct/85502650cd2b45dd998723f0b6488793.png)
![](https://img-blog.csdnimg.cn/direct/0196065072744290a6ec17c64104103e.png)
7.编程常⻅错误归类
1.编译型错误
![](https://img-blog.csdnimg.cn/direct/b86f93087b064ed3b61922311c318aed.png)
2.链接型错误
![](https://img-blog.csdnimg.cn/direct/3199f47f40cf4c809c1606aeec20e697.png)
3.运⾏时错误
8.结语
本章我们认识了调试的过程与应用,一个好的程序,离不开调试,在之后的学习中我们也会经常去调试,这样才能发现我们的问题所在并去改正,加油吧!!!