在写代码的过程中必然会遇到问题,调试程序必不可少,这里我们就介绍一下 Visual Studio 的调试技巧。
以VS2022为例
1. bug起源
程序错误,即英文的Bug,也称为缺陷、臭虫,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。 早期的计算机由于体积非常庞大,有些小虫子可能会钻入机器内部,造成计算机工作失灵。史上的第一只 Bug ,真的是因为一只飞蛾意外走入一电脑而引致故障,因此Bug从原意为臭虫引申为程序错误。 一些有趣的Bug有时也会成为一种乐趣。在电脑游戏中,一些Bug,假如不令游戏出现大错误的话,经常会变成一种玩游戏时的秘技。
2. 调试
调试(debug):对功能、程序等进行调整和实验验证。
编好程序后,用各种手段进行查错和排错的过程。作为程序的正确性不仅仅表现在正常功能的完成上,更重要的是对意外情况的正确处理。
3. debug 和 release
3.1 debug
debug通常被称为调试版本, 相当于一个放大镜,帮助寻找错误,而这个放大镜被我们写程序的人捏在手里,如何正确使用就看我们自己。
当我们用的是debug版本时候,系统就会生成一个debug版本的可执行程序,这个可执行程序就包含调试信息,不做任何优化,便于调试。
3.2 release
release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
既然称之为发布版本,顾名思义就是要发布,给用户使用。设置为 release 版本后,系统生成的 release 版本的可执行程序进行了优化,就不包含调试信息,在大小和运行速度上都是最优的,目的是方便用户使用。
4.1 调试快捷键
下面介绍一下最常见的快捷键:
F9:创建断点或取消断点。
F5:启动调试,一般配合 F9 使用。
说明:在逐过程(F10)的状态下,如果有已经有创建的断点,按 F5 会直接跳到断点处节省了时间。
F10:逐过程, 逐过程执行某个活动。通常用来处理一个过程,也可以是一条语句。
F11:逐语句,单步执行某个活动,每次只执行一条语句。
值得注意的是:当程序中有调用函数时,使用 F10 是不会进入到被调用的函数里面去的,只有 F11 才能进入被调用函数中。
虽然按 F10 没有进入到被调用的函数中去,但是被调用函数中的代码块都会执行,F11 只是进入到函数中观察每条语句的执行。
Ctrl+F5:开始执行(不调试)。
F5:启动调试,启动目标文件并将调试器附加到目标进程中,一般用于通过加断点调试用;
Ctrl+F5:开始执行(不调试),启动目标文件,但不附加调试器。
5. 监视和内存
调试过程中遇到的问题如果 逐过程(F10) 或者 逐语句(F11) 没有发现的,可以借助监视和内存来解决问题。
5.1 监视
监视用来监视变量或者其他值,时刻查看变量的变化,帮助我们解决问题。
常用的是普通监视窗口,手动输入变量。
而自动窗口会自动生成变量或其他值,这些自动生成的项会根据实际情况时刻发生变化,不利于观察。
5.2 内存
我们在变量窗口输入变量的地址之后,可以观察到几条信息,帮助我们理解。
内存的地址一般输入&a,&c,arr 等。
最后
编译器只会报语法的错误,并不会报逻辑的错误。所以写程序之前要多思考,尽量避免关键词拼写的错误或者一些其他的错误。
如果程序出了问题,可参考错误列表或者调试起来一步步纠错。
希望道友们写代码一气呵成!!!