亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能,成为一名优秀的程序员。如果你有任何疑问或建议,请随时在评论区留言,让我们一起成长进步!现在,让我们开始这场知识之旅吧!
文章目录
☀️前言
本章,我们将学习什么是bug, 并且如何去使用VS调式, 来解决问题, 接下来就让我们探索吧⬇️⬇️⬇️
🌴1. 什么是bug 🐛
在我们打游戏的时候,可能突然会随口就说了一句有bug,那么这个bug是什么意思呢?
其实,bug 本意是 “虫子🐛” , 现在呢一般是指在电脑系统或者程序中,隐藏着一些缺陷, 简称为程序漏洞。
那么这一词的创始人,名为格蕾丝·赫柏,是一名美国计算机科学家,同时也是为美国海军工作的电脑专家。
1945年9月9日,格蕾丝使用的Mark Ⅱ出现故障,导致工作无法进行。经过了近一天的检查,格蕾丝找到了故障的原因:继电器中有一只死掉的蛾子。蛾子被夹了出来。后来,”bug” (小虫) 和”debug” (除虫) 这两个本来普普通通的词汇成了计算机领域中特指莫明其妙的“错误”和“排除错误”的专用词汇而流传至今,而格蕾丝·赫柏也因此成了第一个发现“bug”的人。
💻2. 什么是调式(debug)🧑🏼💻
遇到bug了,我们就需要解决bug,如何解决呢?这个时候就需要调式(debug),我们能通过调式,来找到问题所在,随后解决问题。
那么在VS中,我们是如何进行调式呢?让我们接着往下探讨⬇️⬇️⬇️
☁️3. Debug 和 Rlease 🌨️
当我们在使用VS时,会在上方发现,有着Debug和Rlease,这2个选项。那么它们分别都有着什么意思呢❓
Debug 通常称之为调式版本,它包含着调式信息,并且不会对程序进行任何的优化,能够便于程序员调式程序。当程序员进行写代码,需要经常性的去调式代码,那么就需要将版本设置为Debug,这样当程序编译时,产生的就是Debug版本的可执行程序,里面就包含了调式信息,能够直接调式。
Release 通常称之为发布版本,该版本往往是进行了各种程序的优化,使得程序在运行速度上以及大小都是最优的。以便用户能够更好的使用,当程序员完成代码,测试人员再对程序进行测试,直到程序的质量符合用户的要求,这时就会设置成Rlease版本,编译时,产生的就是Release版本的可执行程序,这个版本是用户在使用,不包含调式信息。
该图是,Debug和Release版本的对比
通过对比,我们可以很清楚的看到它们的大小,Debug版本相对来说比较大,Release版本相对来说是小的🤏🏼。
⌨️4. VS调式的快捷键🖱️
🌴4.1 环境准备
我们在前边很好的了解Debug和Release这2个版本,那么接下来就是学习VS调式中需要使用到的快捷键。
首先是环境的准备,那么我们需要把环境设置成能够支持调式的版本,也就是Debug版本,如图:
🌴4.2 调式快捷键
我们最常用的是以下几个快捷键⬇️⬇️⬇️:
- F10:完成的是逐过程,通常用来处理一个过程,一个过程可以是一条语句,也可以是一次函数调用。
- F9:完成的是,创建断点和取消断点,断点的作用是可以在程序的任意位置设置断点,打上断点可以使得程序执行到想要的位置暂停执行,然后我们就可以使用F10和F11这些快捷键,来观察代码的执行细节。 断点还有着条件断点,只有满足这个条件时,才能够触发断点。
- F5:启动调式,经常用来直接跳到下一个断点处,一般是和F9搭配使用。
- F11:逐语句,意思是每一次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入到函数内部,在函数调用的地方,想要进入函数观察细节,就可以使用F11,如果使用的是F10,则直接完成的是函数调用,无法进入到函数内部观察细节。
- CTRL+F5:开始执行不调式,如果想让程序直接运行起来而不调式。(当CTRL+F5不行可以使用CTRL+FN+F5)。
演示过程:⬇️⬇️⬇️
使用F10对下边代码进行调式:
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int c = a + b;
char ch1 = 'a';
int arr[5] = { 1,2,3,4,5 };
float f1 = 3.1415f;
return 0;
}
那么语句是一条一条往下执行的,这时我们可以通过监视观察。
使用F9⬇️⬇️⬇️:
那么F9是打断点,你可以使用左击鼠标或者键盘上的F9进行打断点,选择到你想要的位置。
那么我们前边也说了断点是可以设置断点条件的,只有满足这个条件那么断点才能够触发,如何去设置呢❓
首先,设置好断点,然后右击鼠标,就可以看到条件选项。
看到下图,就可以自己设置想要触发的条件,最后回车即可。
F5的使用,F5是搭配F9使用的,当F9打上断点,按一下F5就可以直接执行到断点处,那么如何去使用呢⬇️⬇️⬇️
该图,前边的代码没有问题,那么我不需要去调式,我想调式后边的代码,那么如果是使用F10,你需要一条一条的走,那么是不是很麻烦,如果前边有着几百上千行的代码,那这太苦恼了。 所以,我们可以在想调式的位置打上断点,然后按一下F5,就可以到这个位置。
这样我们就可以到想调式的位置进行调式,而前边的代码也会被执行。
F11的使用⬇️⬇️⬇️
F11可以让我们进入到函数内部进行观察,当我对下边代码进行调式,我想要进入到函数内部就可以使用F11 。
#include<stdio.h>
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int ret = Add(a, b);
printf("%d\n", ret);
return 0;
}
当我的左边箭头走到函数调用时,直接按F11就可以进入到函数内部。
进入到函数内部⬇️⬇️
这样我们就可以细致的调式代码
CTRL+F5的使用🛠️🛠️
这个快捷键是直接运行程序代码生成可执行程序,当然了,我们也可以使用下图⬇️这个选项
有一些使用笔记本自带的键盘可能不行,那么可以使用CTRL+Fn+F5
🚀5. 监视和内存的观察
在前边快捷键的介绍中,我们可能会迷惑,左边的图是什么意思,其实是监视和内存的观察,那么这有什么用❓
其实是在代码调式过程中,可以观察到上下文环境中的变量的值,这些观察有一个前提,一定是开始调式后才能够观察。
👩🏻🚀5.1 监视
如何打开监视❓
在开始调试后,在菜单栏中的(调式)—> (窗口) —> (监视), 有4个监视口,喜欢打开那个都行,最后输入想要观察的变量即可。
一定要先进行调式才能够看到❗❗❗
👩🏻🚀5.2 内存
监视窗口可能看的不够仔细,那么内存窗口也是可以观察到变量在内存中的存储情况,一样的还是在(调式)—> (窗口) —> (内存),也有着4个窗口,喜欢哪个就打开哪个。
当我想看变量a在内存的存储,可以&a即可。
👋🏻 结束语
非常感谢您花时间阅读我的博客,希望我的分享能为您带来收获。如果您对本文有任何想法或疑问,欢迎在评论区留言交流。如果您喜欢我的博客,请继续关注,我会定期更新更多精彩内容。最后,别忘了行动起来的力量,让我们一起实践这些方法,见证自己的成长和进步!
🌻🌹🪻🌷🪻🌷🌼🌻🌺🌹🌺🌻🌼🌷🪻🌷🌼
再见,祝您生活愉快!