【C语言】--VS2022实用调试技巧

目录

 一.什么是bug

二.什么是调试 

三.Debug和Release

四.vs调试快捷键

五.监视和内存视察

5.1--监视

5.2--内存 

六.编译常见错误归类

6.1--编译型错误

 6.2--链接型错误

 6.3--运行时错误


前言:工欲善其事,必先利其器。我们想要更好的去编写代码,查找问题,就离不开一些调试的技巧,这篇文章我会为大家分享一些VS2022中的一些调试技巧。


 一.什么是bug

--bug本意是"昆虫"或者"虫子",现在一般指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题,简称程序漏洞。为什么bug一词会有这样意思的转变呢,这是因为世界上的第一个程序错误是由一只飞蛾引起的。

二.什么是调试 

--当我们发现程序中存在的问题的时候,那么我们就得找到问题所在并解决问题。

这个找问题的过程就是调试了,英文名叫debug

调试一个程序,首先也是最重要的就是承认出现了问题,然后再通过各种方法去定位问题的位置,可能是通过逐过程的调试,也可能是隔离和屏蔽代码的方式,找到问题所在位置,然后进一步确定错误产生的原因,最后修复代码,解决问题,重新测试。

在调试的过程中我们要做到心中有数,自己知道代码应该怎么去执行,然后再去看代码有没有按照我们预想的路线去执行,调试可以增加我们对代码的理解和掌控,掌握了调试就能看到本质,对程序内部一览无余。

三.Debug和Release

我们在VS2022上编写代码的时候,就会看到有debug和release两个选项,接下来给大家介绍一下他们分别是什么意思吧 ~

Debug通常称为调试版本,它包含调试信息,并且不做任何优化,便于我们去调试程序;我们写代码时,需要经常性的调试代码,就要将这里设置为debug,这样编译产生的是debug版本的可执行程序,其中包含调试信息,是可以直接调试的。

Release通常被称为发布版本,它往往是进行了各种优化后,使得程序在代码大小和运行速度上都是最优的,以便用于很好的去使用。当我们写完代码,且不断调试优化后,最终发给别人的版本就会设置为release,编译产生的就是release版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。

四.vs调试快捷键

--调试我们需要先将版本改为Debug

在调试当中最常用的几个快捷键:

  • F9:创建断点和取消断点,断点的作用是可以在程序的任意位置设置断点,打上断点后就可以让程序执行到想要的位置后暂停执行,而后我们可以利用F10,F11等快捷键,观察代码执行的细节,如果是条件判断,满足这个条件才会触发断点。
  • F5:开始调试,经常用来直接跳到断点处,和F9配合使用。
  • F10:逐过程,通常用来处理一个过程,可以是一条语句也可以是一次函数调用。
  • F11:逐语句,就是每次都执行一条语句,这个快捷键可以让我们的执行逻辑进入函数内部。在函数调用的地方,想要进一步进入函数观察的话,必须使用F11,如果使用F10,会直接完成函数调用。
  • CTRL+F5:开始执行不调试,如果你想让程序直接运行起来不去调试的话就可以使用这个快捷键。

五.监视和内存视察

5.1--监视

--按F10开始逐过程调试后(如果没打断点的话不要直接用F5,会直接调试到结束的),在菜单栏中【调试】->【窗口】->【监视】,打开任意一个监视窗口,输入你要观察的对象就可以了,具体操作如下图;

5.2--内存 

--如果监视还不能看仔细的话,也是可以观察变量在内存中的存储情况的,还是在调试后,在菜单栏中【调试】->【窗口】->【内存】,打开任意一个内存窗口,打开后在地址栏输入:arr,&num,&c这类地址,就能观察到该地址处的数据了

除此以外,在调试的窗口中还有很多别的选项,大家可以自行去验证使用

 补充:如果调试进入想通过形参去观察数组内容的话,可以采用数组名,n的形式,二维数组只用输入有几行就行了


六.编译常见错误归类

6.1--编译型错误

--编译型错误一般都是语法错误,这类错误一般看错误信息就能找到线索的,双击错误信息也能初步的跳转到代码错误的地方或者附近,编译错误是比较容易解决的。

我们来看一个会出现编译错误的代码体会一下吧

#include<stdio.h>

int main()
{
	printf("hehe\n")//这里少了个;
	return 0;
}

 6.2--链接型错误

--看错误信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。比较常见的有这些:

  • 标识符名不存在
  • 拼写错误
  • 头文件没包含
  • 引用的库不存在

我们来看一个因为没包含头文件发生的链接型错误

//include<stdio.h>//本来应该包含的头文件,我现在给注释掉了。
int main()
{
	printf("hehe\n");
	return 0;
}

 

 6.3--运行时错误

--运行时错误也是最为麻烦的,是千变万化的,我们通常需要借助调试,逐步定位问题,调试是可以用来解决运行时问题的。

补充小技巧:通过快捷键CTRL+F可以进入搜索栏,你可以输入你想要查找的代码,并且还可以进行单个修改或者全部修改,如下图展示:


结语:本篇文章就到此结束了,这里为大家分享了部分VS2022中的调试技巧,随时欢迎大家在评论区补充交流,感谢大家的关注和支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值