今天给大家分享VS2019的一些调试小技巧,帮助你快速上手。
“你是否还在用Console.WriteLine
调试代码?掌握这些VS2019调试神器,轻松告别低效抓虫!无需复杂配置,5分钟上手实战技巧!”
目录
一、什么是调试(debug)?
当我们发现程序中存在的问题的时候,那下⼀步就是找到问题,并修复问题。 这个找问题的过程叫称为调试,英⽂叫debug(消灭bug)的意思。
调试⼀个程序,⾸先是承认出现了问题,然后通过各种⼿段去定位问题的位置,可能是逐过程的调 试,也可能是隔离和屏蔽代码的⽅式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码, 重新测试。
1.Debug和Release
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序; 程序员在写代码的时候,需要经常性的调试代码,就将这⾥设置为 debug ,这样编译产⽣的是 debug 版本的可执⾏程序,其中包含调试信息,是可以直接调试的。
Release称为发布版本,它往往是进⾏了各种优化,使得程序在代码⼤⼩和运⾏速度上都是最优的, 以便⽤⼾很好地使⽤。当程序员写完代码,测试再对程序进⾏测试,直到程序的质量符合交付给⽤⼾ 使⽤的标准,这个时候就会设置为 release ,编译产⽣的就是 release 版本的可执⾏程序,这个 版本是⽤⼾使⽤的,⽆需包含调试信息等。
二、基础但超实用的调试功能
1. 设置断点(F9)与逐语句执行(F11)
-
操作:在代码行号左侧点击,或按
F9
设置断点;按F11
逐行跟踪执行流程。 -
场景:调试登录逻辑时,逐行验证用户输入是否正确传递。
2. 快速查看变量值(悬停/鼠标框选)
-
鼠标悬停变量直接显示当前值。
-
高级技巧:拖动选中表达式(如
userList.Count > 0
),悬停显示结果。
3. 监视窗口(Ctrl+Alt+W, 1)
-
添加变量或复杂表达式(如
price * quantity
),实时监控变化。 -
右键功能:修改变量值模拟不同场景。
三、新手必会的调试快捷键
调试最常使⽤的⼏个快捷键:
F9:创建断点和取消断点
断点的作⽤是可以在程序的任意位置设置断点,打上断点就可以使得程序执⾏到想要的位置暂定执 ⾏,接下来我们就可以使⽤F10,F11这些快捷键,观察代码的执⾏细节。
条件断点:满⾜这个条件,才触发断点
F5:启动调试,经常⽤来直接跳到下⼀个断点处,⼀般是和F9配合使⽤。
F10:逐过程,通常⽤来处理⼀个过程,⼀个过程可以是⼀次函数调⽤,或者是⼀条语句。
F11:逐语句,就是每次都执⾏⼀条语句,但是这个快捷键可以使我们的执⾏逻辑进⼊函数内部。在函 数调⽤的地⽅,想进⼊函数观察细节,必须使⽤F11,如果使⽤F10,直接完成函数调⽤。
CTRL + F5:开始执⾏不调试,如果你想让程序直接运⾏起来⽽不调试就可以直接使⽤。
VS更多快捷键了解:http://blog.youkuaiyun.com/mrlisky/article/details/72622009
四、监视和内存观察
监视和内存观察可以很好的让你发现哪里逻辑出现问题,通过观察某一个变量来确定问题,以便更好的解决问题
这些观察的前提条件⼀定是开始调试后观察
示例:
#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;
}
F10开始调试后,在菜单栏中【调试】->【窗⼝】->【监视】,打开任意⼀个监视窗⼝,输⼊想要观察的对 象就⾏。
打开监视窗⼝:
以上操作就可以监视变量的变化,通过F10一步一步走来观察变量的变化是否和预期的结果一样。
我们还可以通过看内存来观察变量的储存情况: 还是在【调试】->【窗⼝】-> 【内存】
五、调试示例
示例:求 1!+2!+3!+4!+...n! 的和,请看下⾯的代码:
#include <stdio.h>
int main()
{
int n;
int sum = 0;
int ret = 1;
scanf("%d", &n);
int i = 0;
for (i = 1; i <= n; i++)
{
int j = 1;
for (j = 1; j <= i; j++)
{
ret *= j;
}
sum += ret;
}
printf("%d", sum);
return 0;
}
运行结果:
输入一个3,就是1!+2!+3!,答案等于15,大家觉得对吗?我们仔细一算应该是9的,那为什么是15呢,这时候就可以调试来观察变量的变化发现问题的所在之处。
这是我们一开始的值,n输入为3,按F10一步一步调试
这里我们可以发现当i等于3,j等于1是,ret的值还是为2,这说明了ret的值在计算3!时初始值不是1,这就相当于3!=2*2*3=12,再加上1!和2!就等于15了 ,所以我们应该要在每次进入第二次循环的时候就将ret的值给初始化为1,改动如下:
int main()
{
int n;
int sum = 0;
scanf("%d", &n);
int i = 0;
int j = 1;
for (i = 1; i <= n; i++)
{
int ret = 1;
for (j = 1; j <= i; j++)
{
ret *= j;
}
sum += ret;
}
printf("%d", sum);
return 0;
}
运行结果:
这样答案就正确了,这就是调试的使用,当我们没有发现问题,但是运行结果错误时,就可以进行调试来发现问题所在。
“这些技巧只是VS2019调试的冰山一角!立即打开你的项目,尝试用F10/F11替代Console.WriteLine
,感受高效调试的魅力吧!遇到问题?欢迎评论区留言交流~”