vs常用调试技巧

目录

前言

一. bug

二. 什么是调试(debug)

三. Debug 和 Release

四. vs调试的快捷键

1.环境准备

 2.调试最常使⽤的⼏个快捷键:

五. 监视和内存观察

1.监视

2.内存

六. 编程常⻅错误归类

1.编译型错误

2.链接型错误

3.运行时错误

 

        


前言

在程序员编写程序的过程中,常常会遇到一些编译上的错误,导致程序的运行结果与预期不符,那么他们又是如何快速的找到问题呢?这时候就不得不提到调试啦,接下来我们一起来学习一下在VS中常用的调试技巧吧!

一. bug

相信对于 bug 这个词大家并不陌生,在玩游戏的过程中,我们经常会说 “这个游戏有bug”,那么什么是 bug 呢?

bug 本意是“昆⾍”或“⾍⼦”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或 问题,简称程序漏洞。那么为什么现在将程序漏洞叫做bug呢?这是因为“Bug” 的创始⼈格蕾丝·赫柏(Grace Murray Hopper),她是⼀位为美国海军⼯作的电脑专家, 1947年9⽉9⽇,格蕾丝·赫柏对Harvard Mark II设置好17000个继电器进⾏编程后,技术⼈员正在进⾏ 整机运⾏时,它突然停⽌了⼯作。于是他们爬上去找原因,发现这台巨⼤的计算机内部⼀组继电器的 触点之间有⼀只⻜蛾,这显然是由于⻜蛾受光和热的吸引,⻜到了触点上,然后被⾼电压击死。所以 在报告中,赫柏⽤胶条贴上⻜蛾,并把“bug”来表⽰“⼀个在电脑程序⾥的错误”,“Bug”这个说 法⼀直沿⽤到今天。

二. 什么是调试(debug)

既然我们了解了什么是bug后 ,意味着bug的出现就是问题的出现,那么出现问题,我们就要去找到问题,并解决它。

这个找问题的过程叫称为调试,英⽂叫debug,就是消灭 bug 的意思。

开始调试⼀个程序,最重要的就是承认出现了问题,然后通过各种⼿段去定位问题的位置,可能是逐过程的调试,也可能是隔离和屏蔽代码的⽅式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码, 重新测试。

相信大家应该都看过 “名侦探柯南” 吧,柯南(工藤新一)经常利用自己聪明的大脑帮助警方查询案件的真相,bug的出现就像案件的出现,我们就像警方,调试呢就像柯南,我们在调试的帮助下,找出bug的所在问题,并且解决问题。

三. Debug 和 Release

在VS上编写代码的时候,我们能够看到有 debug 和 release 两个选项,分别是什么意思呢?

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序; 程序员在写代码的时候,需要经常性的调试代码,就将这⾥设置为 debug ,这样编译产⽣的是 debug 版本的可执⾏程序,其中包含调试信息,是可以直接调试的。

Release 称为发布版本,它往往是进⾏了各种优化,使得程序在代码⼤⼩和运⾏速度上都是最优的, 以便⽤⼾很好地使⽤。当程序员写完代码,测试再对程序进⾏测试,直到程序的质量符合交付给⽤⼾ 使⽤的标准,这个时候就会设置为 release ,编译产⽣的就是 release 版本的可执⾏程序,这个 版本是⽤⼾使⽤的,⽆需包含调试信息等。

对⽐同⼀段代码,编译⽣成的可执⾏⽂件的⼤⼩,可以看到,release版本明显更⼩,⽽debug版本明显更⼤。 

四. vs调试的快捷键

1.环境准备

在开始调试之前,我们首先要选择一个支持调试的环境,所以应该使用Debug环境。

 2.调试最常使⽤的⼏个快捷键:

F9:创建断点和取消断点

断点的作⽤是可以在程序的任意位置设置断点,打上断点就可以使得程序执⾏到想要的位置暂停执⾏,接下来我们就可以使⽤F10,F11这些快捷键,观察代码的执⾏细节。

当出现红色圆点的时候说明断点已经创建好了,当程序执行到这里时就会暂停执行,我们就可以通过F10,F11,细致的观察代码每一步是如何执行的 。

条件断点:满⾜这个条件,才触发断点

当设置好断点后,右键鼠标就可以看到下图条件2字,点进去就可以设置条件啦,当条件满足时就会暂停执行。

 

F5:启动调试,经常⽤来直接跳到下⼀个断点处,⼀般是 和F9配合使⽤。

当拥有两个断点时,按下F5开始调试,程序的执行会先跳到第一个断点暂停执行,当再次按下F5后,程序的执行就会直接跳到第二个断点处

如果第一个断点在循环中,按下F5的时候,则会再次跳到第一个断点处,出了循环后才会跳到下一个断点处:

F10:逐过程,通常⽤来处理⼀个过程,⼀个过程可以是⼀次函数调⽤,或者是⼀条语句。

F11:逐语句,就是每次都执⾏⼀条语句,但是这个快捷键可以使我们的执⾏逻辑进⼊函数内部。在函 数调⽤的地⽅,想进⼊函数观察细节,必须使⽤F11,如果使⽤F10,直接完成函数调⽤。

CTRL + F5:开始执⾏不调试,如果你想让程序直接运⾏起来⽽不调试就可以直接使⽤。

五. 监视和内存观察

1.监视

当代码执行的过程中,我们想要观察变量的值的改变,这时候我们通过调试过程中的监视就可以实现,例如我们想观察下面代码中数组元素的值:

int main()
{
	int arr[10] = { 0 };
	for (int i = 0; i++; i < 10)
	{
		arr[i] = i;
	}
	return 0;
}

 开始调试后,在菜单栏中【调试】->【窗⼝】->【监视】,打开任意⼀个监视窗⼝,输⼊想要观察的对象就可以了。

 

 

2.内存

如果监视窗⼝看的不够仔细,也是可以观察变量在内存中的存储情况,还是在【调试】->【窗⼝】-> 【内存】

在打开内存窗⼝后,在地址栏输⼊:arr ,就能观察到该地址处的数据。

 

 

当然还有其他调试工具,大家都可以手动试试。

六. 编程常⻅错误归类

1.编译型错误

编程中的编译型错误是指在编译阶段(将源代码转换为可执行代码的过程)由编译器检测到的错误。这些错误通常是由于语法问题、类型不匹配、缺少分号、括号不匹配等造成的,它们阻止了程序成功编译,例如:

这种语法错误就是编译型错误的一种, 随着我们对语⾔的熟练掌握,这种错误会越来越少,也容易解决。

2.链接型错误

看错误提⽰信息,主要在代码中找到错误信息中的标识符,然后定位问题所在,⼀般是因为

• 标识符名不存在

• 拼写错误

• 头⽂件没包含

• 引⽤的库不存在

例如:

3.运行时错误

编程中的运行时错误(也称为执行时错误)是指在程序执行过程中发生的错误。这些错误不会在编译阶段被检测出来,因为它们在逻辑上是合法的,但在运行时由于某种原因导致了问题。所以运行时的错误需要我们借助调试,去发现问题所在,调试解决的就是运行时错误。

以上就是本期讲解的调试内容,希望各位小伙伴看完本章内容能够对VS调试有更好的理解,并且学会调试来更快的发现bug并及时解决bug。如果有新的见解和建议,欢迎评论~,谢谢大家!!!

 

 

 

        

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值