引入:
在编写程序的过程中,难免会出现各种错误。例如漏加;,变量没有申明等等,这些是常见的语法错误。编译器会在下方报错
这种情况,按照编译器给出的提示做出对应修改即可。
然而在很多时候 ,会有不可避免的逻辑错误。通常,编译器不会报错,因为你的语法是正确的,计算机又不知道你编写这段代码的目的是什么,所以程序正常运行后,结果与预期不限符合。这时候,我们会去寻找逻辑漏洞。
首先我们可能会在大脑中将程序跑一遍,然后你可能会发现逻辑问题。然而,当逻辑关系相对复杂,程序运行步骤较多时,你会手足无措。也许你觉得我逻辑一点也没错啊,可为什么结果就是不对呢?
于是就有了调试(Dubug)。
调试分为动态调试(Dynamic debugging)和静态调试(static debugging)。
调试界面介绍:
打开我们的Dev-C++
先将下方一栏选项选到调试
接着上方选择Dubug(原来默认为Release)。Release是程序编写完成后,用户使用时的界面选项。而想要调试程序,则选择Dubug。
动态调试介绍:
随机输入五个数,找出其中最大的数
我们编译过了,但是运行结果却是如此:
明显逻辑出错了,我们开始调试。
首先要打断点:在程序左侧一栏点击一下,就成功进行了断点
然后点击下方的调试,调试就开始进行了。
点击下一步,程序就从断点处开始向下运行,并跳出窗口。
当遇到scanf,在窗口输入。
遇到循环,蓝框会在循环语句内循环,直到循环结束。
遇到printf,会输出。
光这样当然看不出什么,我们还要添加查看,查看当前变量的值。
如此,我们可以动态地看变量当前的值。
对于以上程序,我们在调试时发现,max的值始终时-9999,并没有记录到当前最大值。将
arr[i] = max改为max = arr[i]即可
又发现,程序只循环四次,并不是想要的输入五个数。将i < 5改为i <= 5即可。
修改正确,达到目的。
而当我们设置两个断点,程序就只会调试两个断点之间的代码
静态调试:
静态调试,就是自己手动调试。
将程序当前变量值输出出来
还是上面这个例子
我们在循环内部输出max的值,每次循环都会输出一遍
每次循环,max都输出-9999,从而找出来问题所在。