既然是写代码,那自然避免不了会写bug。记得在听MIT6.S081的时候有这么一句话:“当程序的代码量越多,那么出现bug的几率就越大。”就算是经验丰富的老手也不会在不经意间写出bug。
bug无法避免,那么更高效地debug也是一项很重要的技能。其实debug最终要的就是bug的复现,如果能快速并精确地将问题复现,就能帮助我们缩小问题的规模,定位问题的所在。Debug有很多种方法:断点调试,打印输出以及查看日志等等。除了列举的这些方法以外,这里还有一些Tips帮助我们在写程序的时候尽可能让bug更容易被发现。

头图来源:刷-XilmO@夕末-#pixiv


首先先介绍一下三个专业术语:

  • Error: 当程序的输出没有达到预期(即出现错误)时,就成为出现了error。error这是可见的,已经被发现了的程序错误。
  • Fault: fault是造成error的潜在原因。与error不同,fault是程序中还未被发现或还没有表现出来的潜在错误,通常可能是错误的代码逻辑。
  • Failure:这是更严重的一种错误,failure将导致整个程序crash。
    通常来说,debug的过程可以是failure或error的发生,然后通过追踪error来定位fault的所在,再修复程序的bug。

同时error又可以分为三种:

  1. Latent error:潜在的错误
  2. Masked error:并不重要的错误,通常是一些几乎不可能发生的情况才会产生的错误。
  3. Observable error:可见的错误。
    它们之间的关系可以用下面这张图来概括

error model

Last modification:June 4th, 2023 at 11:36 am
If you think my article is useful to you, please feel free to appreciate