seegongsik
编程

什么是调试

学到继承,我们已经做出了相当大的程序(第13课)。可是做出来的程序,总会在某个地方出错。一个错字、一个错误的假设就够了。出错不是失败,而是常有的事;冷静地把它找出来改好,就叫调试。

01

停下的位置就是第一条线索

程序出错时,不会悄无声息地死掉,而是停在某个地方。
然后它会指着那里说:“这儿,这一行。”
这个指向就是最宝贵的第一条线索。错误信息首先告诉你停在了哪里。

步骤 1
步骤 2
步骤 3
步骤 4
步骤 5

按下运行,步骤会依次亮起,在出错的地方一下停住。

停在哪里,一眼就能看出来。
接着,那里会跳出红色的字。
很多人一看到红字就先慌了,其实它是站在我们这边的。

02

红字不是责备,而是提示

红字不是在骂我们。
它是一张便条,写着计算机哪里没弄懂。
通常里面有两样东西:位置(哪里)和种类(什么),比如“这不是数字”“没有这个名字”。
只要学会冷静地读它,问题就解决了一半。

:
点各块拆开读

点一下信息的片段,“哪里”和“什么”就会分开亮起来。

把信息拆成“哪里”和“什么”来读,原本吓人的红字一下子变得友好了。
可是信息指的位置,不一定总是真正的原因。
程序很长的话,怎样才能快速缩小原因的范围?

03

把范围一半一半地缩小

不知道错误在哪里时,不要从头读到尾,先看中间。
到这里都正常吗?正常的话,错误就在后半段;不正常,就在前半段。然后再对半分。
这样一半一半地缩小,再长的代码也能很快找到“元凶”。

1
2
3
4
5
6
7
8

每按一次“检查中间”,就会根据正常还是有问题,把范围缩小一半。

按了几次,范围就缩到了一个地方。
不用把全部看一遍,就准确揪出了元凶。
找到原因了,接下来该修改了,可修改时有个容易掉进去的陷阱。

04

一次只改一处,再检查

看到像是原因的东西,也不能一下子全改。
同时改五个地方,就算改好了,也不知道是哪一处起了作用。
就算出了新问题,也不知道是谁造成的。
所以只改一处,运行一下,看一看。

只改一个候选再按“检查”,原因就清楚了;同时改好几个,就分不清是哪个起了作用。

一处一处地改,真正的原因就清楚了。
准确地找到元凶,也改好了。
那么就结束了吗?还差一步,因为“好像改好了”和“改好了”是两回事。

05

改完以后,一定要再运行一遍确认

光觉得改好了还不算完。
要再运行一遍,亲眼看到它从头到尾通过,才算结束。
顺便还要检查一下,原本正常的其他地方有没有被弄坏。
这一圈“改好再确认”,就是区分瞎猜和真正修好的界线。

步骤 1
步骤 2
步骤 3
步骤 4
步骤 5

按“再运行一遍”,改好的程序就会一路绿灯通过。

现在我们既会编写(第1~13课),也会在出错时找出问题并改好(第14课)。
可是我们写下的这些字,是怎样变成机器真正运行的东西的?
下一课我们就沿着这条路,看看文字怎样变成机器的工作。

一句话总结错误信息是告诉你程序在哪里、出了什么错的提示。把范围一半一半地缩小来找原因,一次只改一处,再运行一遍确认通过就行。信息不是责备,而是最好的线索。
← 编程
如果有帮助,请支持我们