22、软件故障定位的统计技术解析

软件故障定位的统计技术解析

在软件开发过程中,故障定位是一项关键且具有挑战性的任务。本文将深入探讨软件故障定位的相关技术,包括对非语句的处理、输入净化以及输出的重新解读等方面。

1. 处理非语句

理想情况下,程序的源代码可以静态且完全地划分为这些特征的等价类集合。例如,基本块可作为等价准则,任何基本块中的每个语句都能精确地分配到一个分区。这种分区过程也适用于将语句、边和谓词等作为特征的情况。现有工作提出了许多相似系数或派生系数,这些技术将程序抽象为一组特征,如节点、边、谓词、边序列、谓词中的条件序列和数据值等,并估计每个特征与观察到的故障或异常相关的可能性(如故障可疑性)。

1.1 谓词:流行趋势

一种流行的策略是将谓词作为程序实体,并使用执行计数和执行结果作为动态特征。通过估计失败运行和成功运行的概率差异,对程序实体进行排序。相关研究通过统计谓词在执行中为真和为假的次数,并以各种方式比较这些计数,来找出程序中与故障相关的谓词。

以下是一个示例代码片段,其中包含七个谓词(P1 - P7):

P1:
if (rdf <= 0 || cdf <= 0) {
    info = –3.0; 
    goto ret3;
}
...
...
P2:
for (i = 0; i < r; ++i) {
    double sum = 0.0;
P3:
    for (j = 0; j < c; ++j) {
        long k = x(i, j);
        if (k < 0L) {
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值