实用调试技巧【上篇】

简介: 实用调试技巧【上篇】

🥳1. 什么是bug?

8273d13b40f540828eb83bdffefa16cb.jpg

Bug一词的原意是臭虫或虫子。第一代计算机是由许多庞大的真空管组成,并利用大量的电力来使真空管发光。引得一只小虫子Bug钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小飞蛾从真空管中取出后,计算机又恢复正常。研究人员就把这只小飞蛾贴到了当天的工作日记上,从此这只小飞蛾名留青史,后来,bug这个名词就沿用下来。

13575bb122b346519c0117ba44fbf1b0.jpg


🥳2.调试有多重要?

所有发生的事都一定有迹可循,如果问心无愧,就不需要掩盖,也就没有迹象了,如果问心有愧,就必须需要掩盖,那就一定会有迹象,迹象越多就越容易顺藤而上,这就是推理的途径

🚨每一次调试都是在破案的过程,每一次调试都是在进步的过程。所以说调试非常非常重要,是每个人都必须熟练掌握的技能

🚨一名优秀的程序员就是一名出色的侦探!


2.1. 我们是如何写代码的?

0897010e69f54e7abf77cdd49d87280f.jpg

老子写代码就是一把梭,爱谁谁,拿起键盘就是干!一时敲代码一时爽,一直找bug,一直…😵‍💫

e60964edfbdd4c25876bb3892ae72a39.jpg

🤜从现在开始,我要杜绝这种行为!对不会调试说:打咩!!!🤛


2.2.调试是什么?

🙌调试(Debugging/Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。


2.3.调试的基本步骤

🔴发现程序错误的存在
🔴以隔离、消除等方式对错误进行定位
🔴确定错误产生的原因
🔴想出纠正错误的解决方法
🔴对程序错误给予改正,并重新测试


2.4. Debug和Release的介绍

👉Debug 通常称为调试版本,它包含调试信息,并且不会作任何优化,便于程序员调试程序。

👉Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户更好的使用。

fe30098c54fb44d8b8551c4a19e36f45.png

🙌测试人员测的是Release版本,因为测试人员要站在用户角度来发现问题

450ca43030c64b4c9bdc0129b8c76270.png☝️我们可以看到debug版本下和release版本下程序的大小,因为release版本对程序进行了优化,使得代码大小和运行速度都是最优的


🥳3.Windows环境调试介绍

3.1.调试的快捷键

63fb064a0f364dc3a6a0b3ca79124235.png

🙌F5 --------------开始调试

🙌ctrl+F5 -------开始执行(不调试)

🙌F9 -------------设置断点/取消断点

🙌F10 ----------逐过程

🙌F11 ----------逐语句


🚨如果你的电脑按快捷键没有作用,那么就Fn键+快捷键(Fn ---- 辅助快捷键)

🔴👇F10进入调试👇

507753c09dac4647b0c4389966e86739.png

9963bf15778f43f9b5e3573d49cdecba.png

5d45c2d8129246269fe6443f1abbe716.png

8edb575937ab45459ead4bcc2ed2bb75.png

我们可以看到,通过按F10,可以观察到代码在按照你的想法一步一步的执行

👇如果加入一个函数,我们来看一下👇

11a69a560c6843fab03f0ff77eb0f3b6.png

41c1ce65e0734b6199f66b50a69b74ee.png

5c94d4978a6042708fc0e2346d323b52.png这时我们发现一步一步的按F10,它并没有进入函数 test()中,而是直接执行完跳过向下进行了

🔴👇这时我们就需要用到 F11逐语句)👇

5c4a9f92346147e395429495c5d23803.png

ec4beb6ca0ec4cf08409b1fca6aeaa62.png

这时我们就进入了 test()函数内部了

🚨Fn10和F11在大部分情况是一样的,都是按照你的想法一步一步执行,但是在遇到函数的时候,F11(逐语句)的密度会更细,不会跳过任何一个细节

🔴有的电脑在按下F5后调试控制台(小黑窗口)会一闪而过,F5虽是开始调试,但是F5是和F9配合使用的,它俩是一对

👇假如还是刚才那段代码👇

49fe087a1e2a4a128187c17571e4fbf1.png

我现在认为32行之后可能出现了问题,前面的代码都没有问题,如果还继续F10(F11)一步一步调试进行,会执行10次之后才能进入第32行,是不是非常麻烦,那如果代码是第5000行出了问题呢,肯定不可能是逐步调试吧!

那我们能不能在进入调试的时候➡️就主动停在第32行等着我直接进去

👇看代码👇

b4b2cf63af92429bb51f6b36b8f52ffd.png

我们选中这一行,然后按下F9(设置断点)👇

cff187fa11cc4a34942035309c5e65f3.png然后在按F5(开始调试)👇

02fa312881ea43779ada856f94e30a8c.png

前面已经执行完,直接落在第32行了

如果断点不想要了,在按一下F9就取消🔴了

这就是F5和F9配合使用的方式🥰

鼠标点击行数号左面的浅色区域也可以设置断点,再点击就取消,效果是一样的

a53b898b43d74785bd59e0351d0e0e96.png

但是如果循环是1000次,我认为问题可能出现在循环第300次的时候,难道要按300次吗?手指都会断掉了😄,绝对不可能吧

👇那我们应该怎么做呢👇

鼠标放在🔴上然后右击,点击 条件

64c3b6adf5e94b1fa9f15c3405becc95.png

88b12cdc315842b4bb585983232de3ec.png

条件为真才触发,我们把条件设为 i==300,满足条件才触发

56b6e55f3bf4476b88ecf5f8e9ac6b6c.jpg

☝️这时断点就变为了 条件断点☝️

9de836909e1a4017b36daac4b3bc5aca.png

e1473c9895b2423381c95a60f0a9721c.png

☝️可以看到 i 循环到300的时候停了下来☝️

🔴还有一种技巧👇

a9178db1e7284d788ec63f2a55cf16c4.png

我们可以加上一句条件判断,然后把断点🔴设在条件语句里,进入调试也 i 也自然会在300停住👇

dcb4ab005e1745b5a8510b88767a3756.jpg

🥰这些都是一些技巧,希望大家可以理解🥰

🚨必须动手实践,熟练掌握这项技能!

总结🥰
本文章是在 Visual Studio 2022(VS2022)编译环境下进行操作讲解

以上就是调试技巧上篇内容啦🥳🥳🥳🥳
欲知后事如何,请听下篇分解喽💕💕💕
小的会继续学习,继续努力带来更好的作品😊😊😊
创作写文不易,还多请各位大佬uu们多多支持哦🥰🥰🥰

f09da3b0dc2f4da1a8ec977430b265f0.gif
目录
打赏
0
0
0
0
1
分享
相关文章
【第22期】 一文读懂前端调试利器whistle
【第22期】 一文读懂前端调试利器whistle
165 0
调试基础知识及原理
调试基础知识及原理
143 0
《Fiddler调试权威指南》——导读
Fiddler是一种流行的Web调试代理。它功能强大,界面友好,简单易用,无论对开发人员或者测试人员来说,都是非常有用的工具。
1480 0

相关实验场景

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等