调bug就像修路

    调试程序查找bug就像修一条路。当我们站在路的终点发现得到的结果出错时,毫无疑问这条路上有地方出故障了,也许有个大坑,也许有别的岔道了。

    很多人初学者都会站在路终点处重复的执行,试图结果能够再次正确。可往往会失望,只能无助的望着这条让自己感到诡异的路。

    亦或者是用自己有限的视野,来回查看这条万里路到底哪里出现了问题(翻动着数千行的代码),往往会惊呼一切正常,大骂着诡异的问题。

    如果勇气可嘉的话就开着车从始发点到终点考察一遍(就像单步调试一样),可是万里跋涉,不可避免的旅途疲惫,注意力不集中,也许看到路上有大坑,我们眼睁睁的就过去了。也许就忍受不了这枯燥乏味的旅途,放弃考察。

    那么如何才能高效的找出bug所在呢,我们可以在路上设置很多检查站,检查过来的车辆状态是否正常(就像print or assert出很多状态,如果这些状态OK的话,就说明前面的路是没有问题的)。这样一个个检查站的走过去,逐步排查掉之前的道路,只把注意力放在当前出故障的检查站。

    再进一步,如何设置检查站呢?当然是在你认为极易出问题的地方。

    这就像是二分查找一样,每次都能排除一部分道路。最终bug就逃不掉了。

你可能感兴趣的:(调bug就像修路)