调试程序像当侦探
程序出错了别着急,像侦探一样找线索,一步一步揪出那个“小虫子”。
你写程序时,有没有遇到过它“不按你想的做”?明明想让它前进,它偏偏后退;该说“你好”,它却说“再见”。别急,每个程序员都会遇到——这叫“Bug”,找出并修好它的过程叫“调试”。调试并不可怕,反而像一场好玩的侦探游戏!
你知道吗
你知道吗?“Bug”这个词真的和“虫子”有关!1947 年,科学家在计算机里发现了一只真正的飞蛾导致故障,把它拿出来后机器就好了。他们在日志上写“发现一只 bug”,从此程序错误就被叫作 bug 了。
像侦探一样找 Bug
调试程序就像破案。第一步:复现——让错误再次发生,确认它真的存在。第二步:观察——程序是在哪一步开始出错的?第三步:缩小范围——把怀疑的代码一段段测试,找到出问题的那一段。第四步:修复——改正错误,再测试一遍看是否真的好了。
一个好办法是“打印调试”——在程序里加一些“说出当前分数”或“显示当前位置”的积木,让程序在运行时告诉你它每一步在做什么。就像侦探在嫌疑人身上装了追踪器,你能看清它到底在哪一步“跑偏”了。
有时候 Bug 藏得很深,你要像侦探一样问自己几个问题:是不是把“大于”写成了“小于”?是不是少加了一个括号?是不是变量名字写错了?很多 Bug 都是很小很小的错误,却让整个程序罢工。所以程序员写代码时要特别仔细,写完还要多检查几遍。
- 先让错误能重复出现
- 仔细观察是哪一步开始出错的
- 一步步缩小怀疑范围
- 用“打印”看程序每一步在做什么
- 修好后还要再测一遍确认
Bug 也分种类
Bug 有很多种:有的让程序直接停下来,这叫“崩溃”,比如让程序除以零;有的程序能跑,但结果不对,这叫“逻辑错误”,最隐蔽也最难找;还有的平时没事,偶尔才出错,像调皮的小精灵。遇到不同的 Bug 要用不同的办法,最重要的是保持耐心,慢慢找。
动手试试
不插电小游戏:让家人在纸上写一道“算 10 加 5 乘 2”的过程,但故意在某一步写错。你来当侦探,一步步检查每一步的答案,找出错误在哪一步。也可以交换角色,你来写“藏 bug 的题目”,让爸爸妈妈来找——这就是程序员每天在做的事!
调试比写代码难一倍,所以如果你写得太聪明,就调试不了了。——柯林汉


