遇到BUG时你应该怎么做

来源:互联网 发布:mysql 任务 编辑:程序博客网 时间:2024/04/29 09:08

下面是拜读Think Python 中关于代码错误的调试方法的一些记录,特意摘出来以便告诫自己

当你的程序不工作时,

1.首先你需要问自己这些问题:

  • ˆ 有没有什么程序应该做却没有发生?找到执行该函数的代码段,确保程序被执行。
  • ˆ 有没有什么不应该发生的发生了?找到执行该函数的代码段,查看它是否执行了?
  • ˆ 有没有代码的执行效果与你期望的不同?确保你理解有问题的代码,阅读你调用的函数的文档,用一些简单的例子进 行测试。

在编程时,你心中需要有一个关于程序如何工作的模型。如果你的程序没有按照你期望的工作,很可能问题不在于程序,而在于你心中的模型。
修正你心中的模型的最好的方法是将程序分割为不同部分(通常是函数和方法),并分别测试。一旦你发现了模型和现实的差异,你就可以解决问题。
当然,在开发的过程中尼需要建立并测试组件。如果你遇到了问题,只有一小部分新的代码是不确定正确性的。


我写了一个很长的表达式,它没有按照我期望的工作

编写复杂的表达式是合理的,如果它们可读。但是它们调试起来很困难。通常我们将一个
复杂的表达式分割成一系列的临时变量的赋值。


我的函数或方法没有按照我期望的返回

如果你的return 语句包含一个复杂的表达式,你没有机会在返回前打印返回值。同样你可以使用临时变量。例如:对于
return self.hands[i].removeMatches()
你可以写成:
count = self.hands[i].removeMatches()
return count
现在你在返回前可以打印count 的值。


我实在是卡住了,我需要帮助

第一,尝试离开电脑几分钟。电脑辐射会对大脑产生影响,导致下列几种症状:

  • ˆ 沮丧和愤怒

  • ˆ 迷信的人认为“电脑讨厌我”,并神奇的相信“程序仅当我向后戴着帽子时才工作正常”。

  • ˆ 随机漫步编程(用各种可能的方法编程,并选择工作正常的那个)。

如果你发现你有以上任意一种症状,站起来走一走。当你心绪平静时,思考一下程序。它

  • 是做什么的?什么肯能造成了这种行为?上次可以工作的程序是什么时候?下一步做什么?

有时找到一个错误很费时间。我常常在我离开电脑,让思维游荡的时候找到错误。一些找

到错误最好的地方有火车上,浴室里,以及临睡前。


不,我真的需要帮助

即使最好的程序员也会卡住。有时你在一个程序上工作了太长的时间,因此你难以发现错
误。而他人可能一眼就发现问题。
在你向其他人寻求帮助前,你需要做好准备。你的程序需要尽可能简洁,你需要最少的输
入来重现错误。你需要在合适的位置加入print 语句,同时输出应可理解。你需要能够以
简洁的语言描述问题。
当你想某人求助,你需要提供足够的信息:

  • ˆ 是否有出错消息?它是什么?指向程序的哪部分?

  • ˆ 错误出现前你做的最后一步是什么?你写的最后几行是什么?什么新的测试导致了错误?

  • ˆ 你做了哪些尝试?你学到了什么?

当你找到了错误,花时间想一想你怎么能更快的定位它。下一次你遇到类似的问题,你就
可以更快的找到问题。
记住,目标不仅仅是让程序工作,而是学会如何让程序工作。

原创粉丝点击