VS调试技巧以及编程常见报错类型

本文详细介绍了VisualStudio的调试功能,包括bug的起源,debug与release环境的区别,VS中的调试快捷键,监视和内存观察,断点与条件断点的使用,以及编程中的常见错误类型。通过这些技巧,开发者可以更有效地排查和修复代码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

我们都知道VS的功能很强大,特别是它的调试功能,可以很方便的帮助我们找出代码中的bug,今天让我们看看VS中有哪些调试技巧吧---->

1.bug的由来

bug本意“虫子”,最早是由一位为美国海军工作的电脑专家——格蕾丝·赫柏 提出来的。
1947年9月9日,格蕾丝·赫柏对Harvard Mark II设置好17000个继电器进行编程后,技术人员在运行时却出现了问题,之后通过之一排查,他们在其中两个继电器中发现了一只被烤糊的飞蛾。于是,人们便将程序故障统称为“臭虫bug”。那只导致继电器短路的飞蛾也名垂千古,永久的保留在了美国华盛顿国家历史博物馆中。

2.什么是debug(调试)

接上述故事,在出现了bug后,人们便会想如何去排查bug,于是人们将排除程序故障叫做debeg,也就是我们将要说的调试。
调试一个程序,首先是我们承认了一个错误后,我们通过对程序进行逐一排查(包括逐语句逐过程),将问题出错的原因找出来并进行修改,最终得到我们想要的代码。

3.调试环境(Debug VS Release)

我们在用VS编译代码时常会看到以下两个选项,那么他们分别是什么意思呢?
在这里插入图片描述
PS:诺没有以上选项,请鼠标右击工具栏空白处,打开【标准】。
请添加图片描述

Debug通常称为调试版本,它包含调试信息,并不做任何优化。方便程序员在写代码的过程中进行调试,这样编译产生的是debug版本的可执行程序,其中包含调试信息,可以直接调试。
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。此处编译产生的就是release版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。

请添加图片描述

请添加图片描述
通过以上两张图片的对比,我们发现在Release版本下的可执行程序确实要比Debug版本下所占据内存要小一些,原因也正如上述所说,Release版本的可执行程序中没有包含调试信息。因此我们可以得出,想要进行调试,需要将VS设置成Debug,这就是调试环境的准备工作。

4.VS调试快捷键

F9:创建断点和取消断点
F5:启动调试,并跳到下一个断点处
(PS:一般搭配F9使用,诺没有设置断点,则会直接跳到运行结果)
F10:逐过程,每次执行一整个过程,一个过程可以是一整个函数,或是一条语句
F11:逐语句,每次只执行一条语句,可以进入到函数内部
Shift+F5:终止调试
Ctrl+F5:跳过调试,直接运行

想了解更多实用快捷键请看这篇文章:http://t.csdn.cn/Yt2cS

5.监视和内存观察

在调试的过程中,我们想要时刻监视某一个变量的值,我们可以怎么操作呢?以下列代码为例:

#include<stdio.h>
int main()
{
	int kun[5] = {0};
	for (int i = 0; i < 5; i++) ![请添加图片描述](https://img-blog.csdnimg.cn/35572014d7034683a4d74d6bee40ac81.png)

	{
		kun[i] = i;
	}
	return 0;
}

5.1.监视

在开始调试后,在菜单栏中【调试】->【窗口】->【监视】,任意打开一个窗口,输入想要监视的对象即可。请添加图片描述
PS:在没有开始调试前是看不到监视窗口的。
打开监视窗口后可观察到—>请添加图片描述

5.2内存

我们可以观察变量的值,同时也可以观察变量的内存
方法同监视窗口一样:【调试】->【窗⼝】->【内存】

打开内存后可观察到—>请添加图片描述
PS:在打开内存窗⼝后,要在地址栏输入kun,&i等等地址信息后,便可以观察到该地址的数据。

6.断点与条件断点

6.1断点

断点的作用是将调试跳转到任意位置进行执行。我们可以通过在某几处打下断点,再按住F5快速跳转到该位置,再通过F10,F11等快捷键,观察代码的细节。

请添加图片描述
在此代码中,我们在第12行的位置打下断点,然后直接按下F5并打开监视窗口,观察调试运行结果如下:请添加图片描述
发现和结论一样,调试直接从断点处(第12行)开始。

6.2条件断点

条件断点:当我们的断点设在一个循环内部时,默认断点处为循环的开始,如果我们想从循环的中间开始调试,例如从第三次、第十次、第五十次等,我们便可以设置条件断点,帮助我们跳过前面几次循环,减少不必要的操作。

条件断点的设置:【鼠标右击断点处,点击条件】请添加图片描述
设置条件内容请添加图片描述
我们设置从第三次循环开始,然后直接按下F5,观察:请添加图片描述
在第三次循环开始,ji数组前三次均已被赋值0,可看到调试按照我们的需求从第三次开始了。

小技巧:
• 在函数内部打断点,可快速跳转到函数
• 在数组传参,调试进入函数时,如何在监视窗口观察数组的内容: 数组名,n 的形式

7.编程常见报错

7.1编译型错误

一般指语法错误,如缺少分号等。该错误类型比较容易修改,只需通过双击提示便可到达报错内容的附近。

请添加图片描述

7.2链接型错误

一般包括:
• 标识符名不存在
• 拼写错误
• 头文件没包含
• 引用的库函数不存在

请添加图片描述
请添加图片描述

7.3运行时错误

运行时错误是千变万化的,也是最让人头疼的,它可能出现在我们的一个小小的疏忽大意中。
借助刚刚所讲的调试,逐步定位问题所在,可以很好的帮助我们找到并解决该类错误。

结语

以上便是有关调试技巧的全部内容啦,如果还有补充,欢迎在下方留言。如果本篇内容对您有些许帮助,给小编来个三连支持一下呗~~

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值