基于程序频谱的动态缺陷定位(spectrum based dynamic fault localization,SFL)可分为基于可执行语句覆盖的方法和基于谓词覆盖的方法。通过分析以上两类方法可以发现:a)基于可执行语句覆盖的方法未考虑谓词错误和执行结果之间的关联;b...基于程序频谱的动态缺陷定位(spectrum based dynamic fault localization,SFL)可分为基于可执行语句覆盖的方法和基于谓词覆盖的方法。通过分析以上两类方法可以发现:a)基于可执行语句覆盖的方法未考虑谓词错误和执行结果之间的关联;b)基于谓词覆盖的方法只针对谓词进行插桩,最后只计算谓词的可疑度并对谓词进行排序,如果缺陷是非谓词,此类方法无法准确定位缺陷位置;c)忽略了基本块之间的关联和层次特性,将各个基本块看成相互独立的个体。为解决上述问题,首先,将谓词错误与执行结果之间的关联性这一有用信息加入到算法的设计中;其次,加入谓词分层覆盖与分析的思想,对覆盖矩阵中的基本块进行细分和分层;最后,将两者结合,提出一种基于谓词分层覆盖矩阵的缺陷定位方法,即谓词分层覆盖算法Phcm。将西门子程序集作为目标程序,通过与其他三种缺陷定位方法进行对比实验,验证了该方法在提高缺陷定位的精准度和减小代码检查率上的有效性。展开更多
文摘基于程序频谱的动态缺陷定位(spectrum based dynamic fault localization,SFL)可分为基于可执行语句覆盖的方法和基于谓词覆盖的方法。通过分析以上两类方法可以发现:a)基于可执行语句覆盖的方法未考虑谓词错误和执行结果之间的关联;b)基于谓词覆盖的方法只针对谓词进行插桩,最后只计算谓词的可疑度并对谓词进行排序,如果缺陷是非谓词,此类方法无法准确定位缺陷位置;c)忽略了基本块之间的关联和层次特性,将各个基本块看成相互独立的个体。为解决上述问题,首先,将谓词错误与执行结果之间的关联性这一有用信息加入到算法的设计中;其次,加入谓词分层覆盖与分析的思想,对覆盖矩阵中的基本块进行细分和分层;最后,将两者结合,提出一种基于谓词分层覆盖矩阵的缺陷定位方法,即谓词分层覆盖算法Phcm。将西门子程序集作为目标程序,通过与其他三种缺陷定位方法进行对比实验,验证了该方法在提高缺陷定位的精准度和减小代码检查率上的有效性。