CN103559131A - 一种有效的层次化错误定位方法 - Google Patents
一种有效的层次化错误定位方法 Download PDFInfo
- Publication number
- CN103559131A CN103559131A CN201310548119.8A CN201310548119A CN103559131A CN 103559131 A CN103559131 A CN 103559131A CN 201310548119 A CN201310548119 A CN 201310548119A CN 103559131 A CN103559131 A CN 103559131A
- Authority
- CN
- China
- Prior art keywords
- reason
- statement
- exceptional value
- error
- minimum
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种有效的层次化错误定位方法,该方法首先用错误路径中失败assert语句的取值初始化异常值集合V;然后从集合V中挑选一个异常值v计算其不可满足的最弱前置条件;计算异常值v产生的原因c;判断c是否含有错误语句,如果是则算法停止,否则从c出发,通过数据和控制依赖分析标识可能存在的其它异常值集合V’,并将集合V’中的异常值加入集合V中;迭代以上步骤,直到找到含错误语句的原因为止;最后输出含有错误语句的最小原因,以及该原因产生的异常值传递到失败断言语句所经过的原因集合。本发明在帮助调试人员执行错误定位的同时,还能提供有效的信息来辅助调试人员理解错误的形成原因,进而帮助其修护错误。
Description
技术领域
本发明涉及数据流分析技术以及错误定位技术,针对基于单条错误执行路径信息的错误定位方法难以提供有效信息帮助调试人员理解错误发生原因的问题,提出一种有效的半自动(semi-automatic)层次化错误定位方法。
背景技术
程序调试中的错误定位是软件开发过程中代价最为昂贵和耗时的活动之一。错误定位技术通过对源程序、测试结果以及其他各种信息分析,给出造成软件缺陷的源代码语句的可能位置,帮助程序员修复程序缺陷。
根据基于的原理和拥有的特征,大致可以将目前存在的自动化错误定位技术分为三类:基于比较的错误定位方法(A.Groce,S.Chaki,D.Kroening,and O.Strichman.Errorexplanationwith distance metrics,InSTTT,2006;A.Groce and W.Visser,What went wrong:Explainingcounterexample,In Spin Workshop,2003;T.Ball,M.Naik,and S.K.Rajamani,From symptom tocause:Localizing errors in counterexample traces,In POPL,2003;D.Qi,A.Roychoudhury,Zh.k.Liang,K.Vaswani and K.Vaswani.DARWIN:An Approach for Debugging EvolvingPrograms.InESEC-FSE,2009),以及基于状态的错误定位方法(G.Balakrishnan and M.Ganai.Ped:Proof-guided error diagnosis by triangulation of program error causes.InSEFM,pages268–278,2008;A.Griesmayer,R.Bloem,and B.Cook.Repair of boolean programs with an application to c.In CAV,pages358–371,2006;A.Griesmayer,S.Staber,andR.Bloem.Automated fault localizationfor c programs.Electron.Notes Theor.Comput.Sci.,174(4):95–111,May2007;Y.Liu and B.Li.Automated program debugging via multiple predicate switching.InAAAI,pages327–332,2010),以及基于依赖分析的方法(T.Gyimóthy,A.Beszédes,and I.Forgács.An efficient relevant slicingmethod for debugging.In ESEC/FSE,pages303–321,1999;B.Korel and J.Laski.Dynamic programslicing.Inf.Process.Lett.,29(3):155–163,Oct.1988;X.Zhang,S.Tallam,N.Gupta,and R.Gupta.Towards locating execution omission errors.In PLDI,pages415–424,2007)。
基于比较的错误定位方法能提供较为准确的错误语句排序,但是往往需要基于获取大量的失败以及成功的程序执行路径信息,而且该排序结果不利用调试人员对错误形成的理解,进而难以修正程序中的错误。基于状态的错误定位方法能给出一定的信息辅助调试人员理解错误形成的原因,然而这类方法需要搜索大量的状态空间,从而限制了其有效性以及可用性。最后,基于依赖分析的错误定位方法能很好的帮助程序员理解错误的形成,但是它们往往标记太多可能的错误语句,从而导致开发人员难以直接利用其提供的定位结果。
发明内容
针对现有技术存在的问题,本发明的目的在于提出一种有效的层次化错误定位方法,该方法在执行错误定位的同时,还能提供有效的信息来辅助调试人员理解错误的形成原因,进而帮助其修护错误。
通常情况下,只有在完备的程序功能形式化阐述的前提下,才能实现全自动的错误定位。因此为了保证方法的可用性,本发明提供一种半自动的错误定位方法。对于每次错误定位结果,该方法要求程序员判断当前结果是否是真正的错误,如果不是则继续定位直到找到真正的错误为止。
此外,本发明将针对程序错误路径中失败的断言(assert)语句,也就是断言语句错误。这个要求是合理的,因为在软件开发中往往存在大量的断言语句来表明程序员的意图,另外断言也是测试准则(test oracle)的一种重要表现形式。此外,标准的编程错误(例如:空指针解引用,数组边界违反错误,以及除零错误等)都可以使用断言来建模。因此,本发明针对所有可以由断言来建模的错误类型。
本发明的输入为发生错误的程序以及表现该错误的一条具体执行路径,即该错误执行路径可以是从测试工具得到的,也可以是重现给定错误而得到的。输出为引发错误的语句以及解释该错误形成原因的相关语句。
为了实现上述的错误定位方法,本发明的技术方案主要采用静态和动态分析相结合的方法来标识可能导致错误的异常值集合,并通过最弱前置计算以及约束求解技术计算每个异常值产生的原因。该方法包含以下几个步骤:
1a)将给定的错误执行路径中失败断言语句中的的谓词作为初始异常值v初始化异常值集合V;
1b)从上述异常值集合V中选择一个异常值v,从产生异常值v的语句点开始,沿着错误执行路径往前,计算该异常值v的最弱前置条件,直到该最弱前置条件不可满足为止;
1c)计算导致上述最弱前置条件不可满足的最小不可满足核心,标识影响该最小不可满足核心所含约束的语句集合,作为异常值v产生的最小原因;
1d)判断上述计算的最小原因中是否含有错误语句,如果是则算法停止,否则标识其他可能的异常值V',并循环以上步骤计算异常值V'中异常值产生的原因,直至找到含有错误语句的最小原因为止;
1e)输出含有错误语句的最小原因,以及该原因产生的异常值传递到失败断言语句所经过的原因集合,完成错误定位。
步骤1b)中,所述最弱前置条件是由多个约束组成的合取公式;步骤1c)中,所述最弱前置条件不可满足的最小不可满足核心是指含最少合取项的约束集合,删除该集合中的任何一个约束将使原集合变为可满足公式。
具体来说:为了有效处理指针相关运算,本发明对基本的最弱前置条件计算方法(E.W.Dijkstra.A Discipline of Programming.Prentice-Hall,Englewood Cliffs,NJ,1976)进行了扩展,并实现了通过对应工具(约束求解器YICSE)来完成相关计算。
进一步地,步骤1b)中,使用约束求解器YICSE(An smt solver.In http://yices.csl.com/)判断不断更新的最弱前置条件的可满足性,当其不可满足时停止。
进一步地,步骤1c)中,计算异常值产生的最小原因包括以下步骤:
(5a)使用约束求解器YICES计算cond中相互冲突的最小约束集合core,进入步骤(5b);
(5b)对于每个约束p∈core,将影响p的语句集合Sp加入原因c中。此时c表示异常值v产生的最小原因,将c加入错误原因集合C中。
进一步地,步骤1d)中,根据异常值产生的最小原因中的每条语句s,自动分析错误程序,标记错误执行路径中通过控制或者数据依赖影响语句s的谓词语句,将这些谓词语句中的谓词作为其他可能的异常值V'(这些其他可能的异常值V'产生的原因则是可能导致异常值V产生的间接原因)。
进一步地,步骤1e)中,向调试人员输出含错误语句且真正引起给定的错误执行路径中观测到的异常值v产生的根本原因,以及该根本原因产生的异常值v'所经过的异常值对应的错误原因集合C。换而言之,该根本原因表示直接产生异常值v'的原因,而v'会通过C产生的一系列异常值的传播,最终导致观测到的异常值v产生。
进一步地,上述方法还包括按照错误原因之间相互影响的直接或间接的关系,将得到的错误原因组织成树状的错误原因树。
具体来说,原因树的每个结点表示一个原因,每条边则表示原因之间的关系。例如,当原因c1通过数据或者控制依赖影响原因c2时,c1的父结点为c2。因此首先得到的导致错误发生的原因是整棵树的根节点。
本发明公开了一种基于最弱前置条件计算以及约束求解的层次化错误定位方法。由于程序的缺陷表现为一个或者多个程序变量或者(分支)谓词取值为不同于正确值的异常值,而变量的异常值最终可以反映为异常的谓词取值,因此本发明将只关注谓词的异常行为。
本发明将程序缺陷发生的根本原因对应为错误执行路径中某些异常值的产生,并通过计算异常值产生的原因来定位分析程序中错误产生的根本原因。假设错误执行路径的产生是由于某个断言语句assert(p)中谓词p的取值为false,其中谓词p可以表示任何程序属性或者行为。因此本发明观察到的第一个异常行为是谓词p的取值为false。为了定位给定执行路径失败的真正错误原因,该方法首先初始化异常谓词集合为{p}(以下简称异常值集合),然后从异常值集合中挑选一个未分析的异常值,通过最弱前置条件计算以及约束求解技术分析其产生的可能原因;判断刚产生的原因是否包含错误语句,如果是则算法停止,否则标记其它可能影响刚产生的错误原因的其它异常值,并用其更新异常值集合;迭代以上过程,直到找到包含错误语句的原因为止。
通过上述技术方案可以看出,本发明具有三个特点:首先,通过最弱前置条件计算以及求解最小不可满足核心,每个错误原因c只包含错误路径上直接导致对应异常值产生的语句,从而保证了错误原因c的最小化;其次,通过标识其它可能存在异常值的方法,计算间接引起错误路径产生的其他可能原因集合C;最后,当调试人员确认当前产生的错误原因c时,向调试人员输出含有错误语句的错误原因c,以及产生c所经过的级别为0~level(v)-1的异常值的错误原因集合C,以供调试人员理解错误的形成原因,进而修护错误。
附图说明
下面结合附图和具体实施方式对本发明作更进一步的说明。
图1本发明错误定位方法流程图;
图2本发明最弱前置条件cond的计算流程图;
图3本发明计算异常值产生的最小原因流程图;
图4本发明标识与原因c相关的异常值流程图。
具体实施方式
本发明是在给定具体错误执行路径的情况下的一种层次化分析错误定位方法,该方法产生错误形成的所有可能原因以供调试人员理解错误的形成。如图1所示,本发明不断迭代计算错误产生原因的步骤,直到完成所有可能的错误原因计算为止,该错误定位算法的伪代码描述如下所示:
输入:具体的错误执行路径:<I,{s1,s2,...,sn}>;//I为错误输入,s1~sn为错误执行语句
序列,sn为失败的assert语句
输出:错误原因集合C;
为了更清楚地理解本发明,特此将本方案的具体实施过程描述如下:
(1)初始化异常值集合V以及错误原因集合C
本方法假设错误执行路径中最后一条执行的语句输出一个不同于正常值的异常值,该异常行为可用失败的assert语句来表示。因此将该assert语句的谓词取值作为第一个异常值(异常值级别为0),并用其初始化异常值集合V。此时还不存在任何错误原因,因此将错误原因集合C初始化为空集。
(2)如果V非空,则从V中选择一个未分析的异常值v
如果V中不存在任何未分析的异常值,表示已经完成错误路径产生的所有可能原因分析,因此停止迭代分析过程,算法正常结束;否则随机选择一个级别最低的未分析的异常值v,并进入下一步分析过程。
(3)计算异常值v产生的最弱前置条件,直到该条件不可满足
本发明最弱前置条件cond的计算流程图,如图2所示。若谓词为p的分支条件对应的异常值v在错误执行路径中的取值o为true,那么它的正常值应为false,即产生v值的分支条件应该不成立(表示为),反之它的正常值为true,即产生v值的分支条件应该成立(表示为p)。因此,我们可以统一将v值的正常值表示为。为了计算异常值v产生的最小原因,本方法首先计算v值取不同于当前取值的最弱前置条件cond,并将cond初始化为在计算过程中,每当cond更新时都将进入步骤(4)分析异常值v产生的最小原因。cond计算从产生异常值v的语句sv开始,沿着给定的错误执行前缀路径s1,s2,...,sv-1往前进行,具体流程为:
(3b)若s为空,则表示已经完成前缀路径s1,s2,…,sv-1中所有语句的分析,则进入步骤(3i);否则进入步骤步骤(3c);
(3c)当语句s为含有谓词p的分支语句时,则进入步骤(3d),否则进入步骤(3e);
(3d)将影响谓词p的语句集合Sp初始化为{s},若p在错误路径中取值为true,则将cond更新为cond∧p,否则将cond更新为然后进入步骤(3g);
(3e)当语句s为赋值语句时,进入步骤(3f),否则进入步骤(3h);
(3f)若语句s定义的变量var出现在cond的某个约束p中,则将p中的变量var替换成语句s对var的重新定义,并将语句s加入为影响约束p的语句集合Sp,然后进入步骤(3g);若var不出现在cond的任何约束中,则进入步骤(3h);
注意:若语句s为非分支语句和赋值语句以外的其他类型的语句,本方法不关注,因此跳过对语句s的分析直接进入步骤(3g)。
(3g)用求解器YICES判断cond是否为可满足约束,若cond不可满足,则计算结束;否则进入步骤(3h);
(3h)赋值下一个分析的语句s为s的前驱语句结点,并返回步骤(3b);
(3i)用输入I表示的每个输入变量的具体值替换cond中的输入变量,进入步骤(3g);
从cond构造以及更新规则可知,此时的cond一定是不可满足的约束。至此cond的计算结束。
(4)分析异常值v产生的原因
在步骤(3)中不断迭代计算更新最弱前置条件cond,直到约束求解器YICES判断cond变为不可满足约束为止,本方法从不可满足的cond出发计算异常值v产生的最小原因,如图3所示,具体流程为:
(4a)使用求解器YICES计算cond中相互冲突的最小约束集合core,进入步骤(4b);
(4b)对于每个约束p∈core,将影响p的语句集合Sp加入原因c中。此时c表示异常值v产生的最小原因,将c加入错误原因集合C中。
(5)用原因c更新异常值集合V,然后返回步骤(2)
原因c是导致异常值v产生的最直接原因,c中任何语句的改变将会阻止异常v值的产生。此时,调试人员需要确认原因c中的语句是否是导致错误的根本原因,如果是则算法结束;否则还存在其他可能导致异常v值产生的原因。这些原因往往对应着其它异常值,而这些异常值可以通过控制或者数据依赖关系来影响c中语句的执行,进而最终导致异常v值的产生。换而言之,存在这样的情况:这些异常值才是异常值v产生的根本原因。因此为了寻找错误路径产生的所有可能原因,本方法在每次获得新的错误原因c时,将寻找其它可能导致v产生的其它异常值集合,并用其更新异常值集合V。本发明标识与原因c相关的异常值流程图如图4所示,具体流程为:
(5a)将待分析的语句集合S初始化为原因c包含的所有语句,然后进入步骤(5b);
(5b)若S非空,则随机选择语句s作为下个分析对象,进入步骤(5c);否则步骤(5)完成;
(5c)计算s的前缀路径中离s最近且不反向控制依赖于s的分支语句s’,将s’中的谓词p加入谓词异常集合V中,且将其级别设置为level(v)+1(最初观测到的异常值v的level设置为0,由v引起的所有异常值的level为level(v)+1),因为当谓词p的取值不同于它在错误执行路径中的取值时,语句s将不会被执行,从而打破原因c,进而消除异常值v,进入步骤(5d);
(5d)对于s使用的每个变量var,分析可能影响var的取值的分支语句集合B,并将B中每个分支语句的谓词标记为可能的异常值(级别设置为level(v)+1),并用其更新集合V,然后返回步骤(5b),具体流程为:
(5d1)对s使用的每个变量var,执行步骤(5d2)~(5d4)的分析过程;
(5d2)计算var在语句s前最后被赋值的语句s’,进入步骤(5d3);
(5d3)通过静态分析计算语句s’~s之间可能会导致变量var被重新定义的分支语句集合B,并将B中分支语句的谓词加入集合V,因为B中谓词的取值会影响s使用的变量var,进而影响v值的产生。
以上所述的步骤(5c)与(5d)分别描述可能会通过控制和数据依赖关系影响原因c的其他异常值。这些异常值的分析是非常有必要的,因为通常错误的发生都是通过一定数量的异常值之间的控制或者数据传递影响之后才产生最终表现出来的异常行为。
步骤(3)~(5)完成了对一个异常值v的分析,接下来返回到步骤(2)中继续分析其它可能的异常值,直到完成对所有异常值的分析为止。
(6)输出被调试人员确认的含错误语句的错误原因c,以及产生c所经过的级别为0~level(v)-1的异常值的错误原因集合C,以供调试人员理解错误的形成原因,进而修护错误。至此,算法结束。
具体来说,c表示真正导致错误的语句集合,而C表示c产生的异常值传播到错误发生点的语句集合。c与C共同描述了错误值的产生以及传递到错误显现出来过程,因此它们能有效的帮助程序员很好的理解错误的形成,从而帮助调试人员修复对应的错误。
Claims (8)
1.一种有效的层次化错误定位方法,包括以下步骤:
1a)将给定的错误执行路径中失败断言语句中的的谓词作为初始异常值v初始化异常值集合V;
1b)从上述异常值集合V中选择一个异常值v,从产生异常值v的语句点开始,沿着错误执行路径往前,计算该异常值v的最弱前置条件,直到该最弱前置条件不可满足为止;
1c)计算导致上述最弱前置条件不可满足的最小不可满足核心,标识影响该最小不可满足核心所含约束的语句集合,作为异常值v产生的最小原因;
1d)判断上述计算的最小原因中是否含有错误语句,如果是则算法停止,否则标识其他可能的异常值V',并循环以上步骤计算异常值V'中异常值产生的最小原因,直至找到含有错误语句的最小原因为止;
1e)输出含有错误语句的最小原因,以及该最小原因产生的异常值传递到失败断言语句所经过的原因集合,完成错误定位。
2.如权利要求1所述的有效的层次化错误定位方法,其特征在于,步骤1b)中,所述最弱前置条件是由多个约束组成的合取公式;步骤1c)中,所述最弱前置条件不可满足的最小不可满足核心是指含最少合取项的约束集合,删除该集合中的任何一个约束将使原集合变为可满足公式。
3.如权利要求1所述的有效的层次化错误定位方法,其特征在于,步骤1b)中,使用约束求解器YICSE判断不断更新的最弱前置条件的可满足性,当其不可满足时停止。
4.如权利要求1所述的有效的层次化错误定位方法,其特征在于,步骤1c)中,计算异常值产生的最小原因,具体包括以下步骤:
(5a)使用约束求解器YICES计算最弱前置条件中相互冲突的最小约束集合core,进入步骤(5b);
(5b)对于每个约束p∈core,将影响p的语句集合Sp加入原因c中,此时c表示异常值产生的最小原因。
5.如权利要求1所述的有效的层次化错误定位方法,其特征在于,步骤1d)中,根据异常值产生的最小原因中的每条语句,标记错误执行路径中通过控制或者数据依赖影响所述每条语句的谓词语句,将所述谓词语句中的谓词作为其他可能的异常值V'。
6.如权利要求1所述的有效的层次化错误定位方法,其特征在于,步骤1e)中,输出含错误语句且真正引起给定的错误执行路径中观测到的异常值v产生的根本原因,以及该根本原因产生的异常值所经过的异常值对应的错误原因集合。
7.如权利要求6所述的有效的层次化错误定位方法,其特征在于,按照错误原因之间相互影响的直接或间接的关系,将得到的错误原因组织成树状的错误原因树。
8.如权利要求7所述的有效的层次化错误定位方法,其特征在于,首先得到的导致错误发生的原因是整棵树的根节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310548119.8A CN103559131B (zh) | 2013-11-07 | 2013-11-07 | 一种有效的层次化错误定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310548119.8A CN103559131B (zh) | 2013-11-07 | 2013-11-07 | 一种有效的层次化错误定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559131A true CN103559131A (zh) | 2014-02-05 |
CN103559131B CN103559131B (zh) | 2017-04-26 |
Family
ID=50013382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310548119.8A Expired - Fee Related CN103559131B (zh) | 2013-11-07 | 2013-11-07 | 一种有效的层次化错误定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103559131B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111889A (zh) * | 2014-07-11 | 2014-10-22 | 西安电子科技大学 | 一种基于tmsvl的c语言实时系统运行形式化分析方法 |
CN106055484A (zh) * | 2016-06-30 | 2016-10-26 | 南京南瑞集团公司 | 一种抽水蓄能电站控制软件在线故障诊断方法及系统 |
CN107291606A (zh) * | 2016-03-31 | 2017-10-24 | 四川大学 | 演绎最弱前置条件的模型和算法 |
CN108228232A (zh) * | 2018-01-12 | 2018-06-29 | 扬州大学 | 一种针对程序中循环问题的自动修复方法 |
CN109960529A (zh) * | 2017-12-21 | 2019-07-02 | 北京奇虎科技有限公司 | 一种程序代码的修复方法和装置 |
CN110851353A (zh) * | 2019-10-22 | 2020-02-28 | 天津大学 | 一种基于Delta Debugging与约束求解的并发程序缺陷定位方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050097118A1 (en) * | 1998-05-14 | 2005-05-05 | Microsoft Corporation | Test generator for database management systems providing tight joins |
CN102541741A (zh) * | 2012-01-05 | 2012-07-04 | 中国科学院软件研究所 | 以布尔表达式的求值序列为谓词单元的软件错误定位方法 |
-
2013
- 2013-11-07 CN CN201310548119.8A patent/CN103559131B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050097118A1 (en) * | 1998-05-14 | 2005-05-05 | Microsoft Corporation | Test generator for database management systems providing tight joins |
CN102541741A (zh) * | 2012-01-05 | 2012-07-04 | 中国科学院软件研究所 | 以布尔表达式的求值序列为谓词单元的软件错误定位方法 |
Non-Patent Citations (2)
Title |
---|
虞凯等: "自动化软件错误定位技术研究进展", 《计算机学报》 * |
黄宏涛等: "基于克雷格插值的反例理解方法", 《吉林大学学报(理学版)》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111889A (zh) * | 2014-07-11 | 2014-10-22 | 西安电子科技大学 | 一种基于tmsvl的c语言实时系统运行形式化分析方法 |
CN104111889B (zh) * | 2014-07-11 | 2017-10-20 | 西安电子科技大学 | 一种基于tmsvl的c语言实时系统运行形式化分析方法 |
CN107291606A (zh) * | 2016-03-31 | 2017-10-24 | 四川大学 | 演绎最弱前置条件的模型和算法 |
CN106055484A (zh) * | 2016-06-30 | 2016-10-26 | 南京南瑞集团公司 | 一种抽水蓄能电站控制软件在线故障诊断方法及系统 |
CN106055484B (zh) * | 2016-06-30 | 2019-03-19 | 南京南瑞集团公司 | 一种抽水蓄能电站控制软件在线故障诊断方法及系统 |
CN109960529A (zh) * | 2017-12-21 | 2019-07-02 | 北京奇虎科技有限公司 | 一种程序代码的修复方法和装置 |
CN108228232A (zh) * | 2018-01-12 | 2018-06-29 | 扬州大学 | 一种针对程序中循环问题的自动修复方法 |
CN108228232B (zh) * | 2018-01-12 | 2021-04-30 | 扬州大学 | 一种针对程序中循环问题的自动修复方法 |
CN110851353A (zh) * | 2019-10-22 | 2020-02-28 | 天津大学 | 一种基于Delta Debugging与约束求解的并发程序缺陷定位方法 |
CN110851353B (zh) * | 2019-10-22 | 2023-03-31 | 天津大学 | 一种基于Delta Debugging与约束求解的并发程序缺陷定位方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103559131B (zh) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103559131A (zh) | 一种有效的层次化错误定位方法 | |
Jose et al. | Bug-assist: Assisting fault localization in ANSI-C programs | |
US20150370685A1 (en) | Defect localization in software integration tests | |
US8584108B2 (en) | Method and apparatus for analyzing software | |
US9934131B2 (en) | Using model-based diagnosis to improve software testing | |
Küçük et al. | Improving fault localization by integrating value and predicate based causal inference techniques | |
Bartocci et al. | Localizing faults in Simulink/Stateflow models with STL | |
CN101739339A (zh) | 一种基于程序动态依赖关系的软件故障定位方法 | |
CN105468517B (zh) | 一种基于黑盒测试用例约简的统计错误定位方法 | |
US20050149805A1 (en) | Pending bug monitors for efficient processor development and debug | |
CN102968369B (zh) | 一种动态断点的自动生成方法及系统 | |
US8589898B2 (en) | Method and apparatus for analyzing software including a calibrated value | |
CN105528293A (zh) | 一种用于回归测试选取测试用例的系统及方法 | |
Lipaczewski et al. | Using tool-supported model based safety analysis--Progress and experiences in SAML development | |
CN103455417A (zh) | 一种基于马尔可夫模型的软件错误定位系统及错误定位方法 | |
Kauhanen et al. | Regression test selection tool for python in continuous integration process | |
JP7190246B2 (ja) | ソフトウェア不具合予測装置 | |
Papakitsos | Robust Software Quality Assurance | |
Goodenough et al. | Software quality assurance: Testing and validation | |
CN103150254B (zh) | 基于状态依赖概率建模的软件错误定位方法 | |
Vineesh et al. | Enhanced design debugging with assistance from guidance-based model checking | |
US10394688B2 (en) | Method for detecting computer module testability problems | |
Ali et al. | Formal verification of time constrains SysML internal block diagram using prism | |
Burton et al. | Automatic generation of tests from Statechart specifications | |
Tóth et al. | A structural decomposition-based diagnosis method for dynamic process systems using HAZID information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170426 Termination date: 20181107 |
|
CF01 | Termination of patent right due to non-payment of annual fee |