1、试凑法

  这是一种不甚严格的纠错策略。根据测试中暴露达到错误征兆,首先可设定一个可疑区。然后采用一些简单的纠错手段(例如在程序中插入打印语句),进一步获取与可疑区有关的信息,借以肯定或修改原来的设想。如果可疑区没有找准,便再来一遍,重置新的可疑区。这种“边试边瞧”的做法,纠错的效率一般较低(这也是试凑(trial and error)一名的由来),故仅适用于结构比较简单的小程序。

  2、跟踪法

   跟踪执行可疑的程序段,是对小型程序纠错又一种常用的策略。它的要求是,是让带错的程序“分步执行”,即每执行完一条语句(或指令),暂时停下检查执行的结果,确认正常后再继续进行。许多高级语言都设有专用于跟踪纠错的语句或命令。他们都具有让程序分步执行的功能。

  对于较小的程序,用跟踪执行来确定错误部位是相当有效的。例如:倘若再某一PASCAL程序中把语句FOR I:=1 to 10 中的10 误写为-10,则程序执行到语句会直接跳过循环体中的语句,转到for循环之后的语句去执行。

  但有些时候,发现程序出错的语句其本身并无错误,问题倒出在位于它前面的一些语句上。例如,当某FORTRAN程序执行到语句ix=iy/(k/n)时发生了运行出错,屏幕上显示“整数上溢”。顺着这条语句返回寻找,在它的前数行找到了给k,n赋值的语句:

  k=5

  n=6

  则不难想到,由于k/n整除所得结果为0,才导致iy被0除后发生上溢。像这样从出错处逐句返回探寻错误的根由,一般称为回溯(back tracking)或反向跟踪。而通常高级语言所设置的跟踪命令都只提供正向跟踪,反向跟踪只能人工进行。

  当程序较长,包含的分支与嵌套又相当多时,跟踪尤其是反向跟踪的路径变得多而且复杂。这是使用跟踪法纠错不仅效率不高,而且会变得难于执行,好改用推理法进行纠错。
  3、推理法

  推理法来源于定理证明,又可区分为归纳法和演绎法两大类。

  归纳法是从个别到整体的推理过程。它从收集个别的故障症状开始,分析各种症状的相互关系后,有可能将它们归纳为某一些假想的错误。如果这一些假想能被证实,找到了真实的病根。

  演绎法是从一般到特殊的推理过程。根据测试获得的错误症状,可以先列出一批可能的病因。接着在这一大范围的设想中,逐一的排除根据不足或与其他测试结果有明显矛盾的病因,然后对余下的一种或数种病因作详细的鉴别,确定真正的病因。由于真正的病因是从大量可能病因中筛选得来的,所以此法有时也称为“病因排除法(Cause Elimination)”