论文部分内容阅读
软件失效在软件程序中很常见。为了保证程序的可靠性,错误需要被定位并消除。错误定位是软件调试过程中最重要和最困难的任务之一。错误定位的一种流行方法是基于统计的定位,它通过分析程序成功执行和失败执行过程中的代码覆盖信息来计算各个程序实体与程序错误之间的关联程度。然而,出现在不同代码片段中的各程序实体能够被执行的概率和次数本质上依赖于该代码片段的程序逻辑以及它们所处于的程序结构。因此,程序的静态特性如程序结构和模式会对程序实体的可疑度值产生影响,使得基于统计的错误定位公式不能够准确地计算出程序实体的实际可疑度值。这种影响与程序实体的真实可疑度值混合在一起,导致了误导性的错误定位结果。本文首次形式化地描述了上述问题,提出了一个理论模型来解决该问题,并开发了一套方法来去除程序结构对某个错误定位方法的影响,以净化错误定位结果。本文从理论上推导了模型的有效性,同时针对四个广泛使用的错误定位技术,对其在十二个目标程序上进行了实验来验证模型的效果。实验结果显示,该模型能够改进过半的错误定位尝试,并将错误定位效果平均提高30%以上。