英文原文:Cutting edge debugging
不论是什么行业里,能让人最兴奋的事情通常都是解决新奇的、高难度问题带来的刺激。在我的工作中,经常会遇到很多 bug,乍一看,它们都是不可能的。不是不可能解决,而是完全不可能出现。就好象最前沿的科技揭示了一个新的奇怪的逻辑现象,以至于人的大脑完全无法理解。
当然,这里我总结的这些 bug 都是很独特的,如果你想说是否能有某种最先进的系统性的方法能将这些 bug 归类,统一解决,那是愚蠢的,就好象一个人无法认识到自己在犯错而避免过错一样。不管怎样,下面的这些 debug 原则对我是十分有效的,而且我相信,对大多数程序员也都是有效的。
你改错了文件
你改对了文件,但却是在别人的机器上
你改对了文件,但忘了保存
你该对了文件,但忘了重新编译
你认为你把那个东西开启了,但实际上你把它关闭了
你认为你把那个东西关闭了,但实际上你把它开启了
会议中,你应该用心听。
你运行了正确的版本,但却是在别人的机器上
你改正了问题,但忘了提交
你改正了问题,也提交了,但忘了 push 到版本库中
你改正了问题,也提交了,也 push 了。然而,很多用户的工作都依赖于之前有问题的版本,于是你必须回滚。
我非常虔诚的向大家奉送这些 debug 原则,任何一次 debug 都不可能只使用其中的一个方法解决。我真挚的希望大家通过对这些 debug 原则的思考能获得意想不到的收获。