CN103617115B - 一种基于抽象解释和模型验证的运行时错误分析方法 - Google Patents
一种基于抽象解释和模型验证的运行时错误分析方法 Download PDFInfo
- Publication number
- CN103617115B CN103617115B CN201310529070.1A CN201310529070A CN103617115B CN 103617115 B CN103617115 B CN 103617115B CN 201310529070 A CN201310529070 A CN 201310529070A CN 103617115 B CN103617115 B CN 103617115B
- Authority
- CN
- China
- Prior art keywords
- program
- variable
- assert
- value
- statement
- 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.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种基于抽象解释和模型验证的运行时错误分析方法,本发明包括以下步骤:基于抽象解释理论,采用前向迭代方法分析程序数值变量值范围,获得程序点达到稳定时的变量值范围信息,对于循环节点的迭代计算采用循环展开和延迟拓宽相结合的方法实现;根据待分析的运行时错误类型,在相关需要检测的程序点处将变量值范围信息转化为断言或假设形式插入程序中;将带有断言和假设的程序转化为布尔公式,其中布尔公式包括限制条件和属性;使用SAT验证器判断布尔公式中属性的正确性。若正确,说明不存在相关运行时错误;若不正确,说明存在相关运行时错误,并输出相关的反例路径。本发明实现了在运行时错误分析精度和效率之间取得一个平衡点。
Description
技术领域
本发明涉及一种基于抽象解释和模型验证的运行时错误分析方法,属于软件测试技术领域。
背景技术
软件规模的不断扩大及复杂性的不断提升不仅给软件开发带来了更多的困难,也给软件测试带来了更大的挑战。即使经过严格的软件测试,也不能保证其内部没有错误。其中,有一类错误是在特定的运行时条件下才可能出现的,简称“运行时错误”。运行时错误是所有软件错误中最具风险的,同时也是最难发现的,其隐藏在代码中,传统的软件测试技术很难发现这些错误。因而,某些软件表面上能正常运行,但实际上可能会导致意外的系统故障。对于航空航天、汽车以及医疗设备等安全级别要求非常高的系统来说,一旦出现这样的运行时错误,损失就是不可估量的。
所有运行时错误类别中,有四种类别可以归纳为程序变量值范围的分析,包括数组越界、除零操作、负数开偶次方、整数和浮点数的上溢出/下溢出四种运行时错误,简称“数值型运行时错误”。目前,形式化的分析方法是检查数值型运行时错误最为有效的方法,包括抽象解释和模型验证等。其中,基于抽象解释的程序值变量分析能够稳定的分析程序中各程序点处的变量值范围,从而检测可能存在的运行时错误。另外,模型检验也是运行时错误检查方法中分析精度较高的一种,它通过穷尽程序状态,搜索满足验证属性的状态,而且对于违反属性的状态能够给出相应的反例路径。
但是,抽象解释和模型验证都有各自的缺点:1.在基于抽象解释的程序值变量分析过程中,对于循环语句中的值范围分析,为了使循环迭代能够保证收敛,一般使用拓宽算子来实现,但拓宽运算带来了计算精度的巨大损失。2.对于大规模程序,模型验证需要验证的属性数量庞大,验证效率低,而且对于无穷系统会导致状态空间爆炸。为了解决上面提到的抽象解释和模型验证各自的局限性问题,需要对循环语句分析和模型验证做相应的改进,将两者有机的结合在一起,从而在分析精度和分析效率之间找到一个平衡点。
发明内容
本发明的技术解决的问题是:克服现有技术的不足,提供了一种基于抽象解释和模型验证的运行时错误分析方法,实现了在运行时错误分析的精度和效率之间取得一个平衡点。
本发明的技术解决方案是:
一种基于抽象解释和模型验证的运行时错误分析方法包括以下步骤:
(1)构造待分析程序的控制流图;
(2)从该控制流图的入口点开始,根据控制流图的迁移方向利用区间域基本操作计算程序中各节点处的变量值范围;
(3)当程序中各节点的变量值范围稳定时,变量值范围计算终止,所述变量值范围计算过程采用迭代计算的方法计算程序中出现的循环节点;
(4)根据待分析的运行时错误类型,在待分析程序中需要检测的节点处将变量值范围信息转化为断言或假设并插入程序中;所述的运行时错误类型包括除零操作、数组越界、负数开偶次方和数值溢出;
(5)将步骤(4)中带有断言和假设的程序转化为布尔公式,所述的布尔公式包括限制条件和属性,其中限制条件为程序的各赋值语句和假设,属性为断言;
(6)利用SAT验证器判断步骤(5)中布尔公式中属性的正确性,若验证正确,则进入步骤(7),否则说明存在该类运行时错误并提供相关的反例路径;
(7)说明不存在该类运行时错误,结束分析过程。
所述步骤(2)中区间域的基本操作包括区间域加、减、乘、除、交、并和拓宽。
所述步骤(3)中循环节点的迭代计算采用循环展开和延迟拓宽相结合的方法实现:首先通过预先设置循环展开次数,将计算出的变量的新值替换前一次计算出的旧值,在迭代计算到达设定的展开次数之后再设置一定延迟次数,在给定的延迟次数内将每次计算后的变量的新值与前一次计算的旧值求并运算,最终循环迭代次数达到设置的延迟次数之后进行拓宽运算。
所述步骤(4)中运行时错误类型分析方法如下;
(1)除零运算:在进行除法运算的程序节点处,判断除数变量取值范围是否包含0,如果包含则插入该变量不为0的断言assert(变量!=0),否则不插入断言,同时在该程序节点处以assume()的形式插入除数变量的值范围信息;
(2)数组越界:判断数组下标变量值范围是否落于数组最大界和最小界之内,如果大于最大界,则插入该变量小于最大界的断言assert(变量<最大界);如果小于最小界,则插入该变量大于最小界的断言assert(变量>最小界);否则不插入断言,同时在该程序节点处以assume()形式插入数组下标变量的值范围信息;
(3)负数开偶次方:在进行开偶次方运算的程序节点处,判断被开方数的值范围是否包含负值,如果包含则插入被开方数为正的断言assert(被开放数>=0),否则不插入断言,同时在该程序点处以assume()形式插入被开方数的值范围信息;
(4)数值溢出:判断变量取值范围是否超过机器最大数,如果超过则插入该变量小于机器最大数的断言assert(变量<机器最大数),否则不插入断言,同时在该程序点处以assume()形式插入该变量的值范围信息。
所述步骤(5)中布尔公式转换方法如下:
(1)将程序中的break,continue语句转换成goto语句;将程序中的for,dowhile语句转换成while语句;
(2)设定循环次数,将转换后的while语句展开成if语句,同时在最后一次循环结束时插入while循环判断条件为假的断言;对后向goto语句采用类似while循环体的方式展开;经过处理的程序仅包含if、前向goto语句、赋值语句、断言、假设和标签,称之为静态独立程序块;
(3)将静态独立程序块转换成布尔公式,包括限制条件和属性,其中限制条件为程序的各赋值语句和假设,属性为需要验证的断言。
本发明与现有技术相比具有如下优点:
(1)本发明将抽象解释和模型验证的方法有机结合在一起。首先利用抽象解释方法计算变量的值范围信息,然后将值范围信息以断言和假设的形式插入源程序中,最后利用模型验证的方法验证断言的正确性。以抽象解释分析的结果作为断言可以减少不必要的断言,插入假设可以缩小模型检验搜索的状态空间,这两者都可以增加模型检验的效率。
(2)本发明采用有界模型验证方法,将程序中所有循环结构转换为while语句,并设定循环次数,将转换后的while语句展开成if语句。该有界模型验证方法可以减小模型验证的复杂度,增加模型验证的效率。
(3)本发明对于循环语句的迭代分析,采用循环展开和拓宽延迟相结合的方法。拓宽操作能够保证迭代分析的收敛性,但会损失大量的精度,通过设置合理的延迟次数延迟拓宽运算,从而提高运算精度。拓宽延迟在一定的程度上提高了循环语句分析的精度,但还远远不够,因而需要结合循环展开方法。通过预先设置循环展开次数,将循环计算出的新值替换前一次迭代计算出的旧值,在迭代到达设定的展开次数之后再采用拓宽延迟的方法。循环展开和拓宽延迟相结合的方法既保证了迭代分析的收敛性又保证了循环语句分析的精度。
附图说明
图1为本发明的流程图;
图2为本发明具体实施例中待检测程序的控制流图。
具体实施方式
下面结合附图对本发明的具体实施方式进行进一步的详细描述。
本发明采用前向迭代算法按照控制流图中有向边的迁移顺序遍历节点,针对每条迁移边,在区间抽象域上调用对应的域操作来传播最新的计算结果,并更新迁移边目标节点处的抽象值,获得各程序点处每个数值变量的值范围信息。然后,根据待分析的数值型运行时错误类型,将数值变量取值信息转化为断言或假设形式插入程序中,作为能够进行模型检验的属性。最后,将带有断言和假设的程序转化为布尔公式,使用SAT验证器判断公式的可满足性,进而验证断言的正确性,若不正确,提供相关的反例路径。
如图1所示,本发明具体步骤如下:
一种基于抽象解释和模型验证的运行时错误分析方法包括以下步骤:
(1)构造待分析程序的控制流图;
控制流图是由结点和有向边构成的有向图,结点代表程序中某个程序点处的信息,有向边代表两个结点之间的迁移语句。结点包含了相应程序点的行号和列号(唯一地定义了程序中的某个程序点)、当前状态(变量在区间抽象域上的取值)以及是否为加宽点等信息。有向边则主要分为:赋值边、条件测试边、函数调用和返回边四种类型。
控制流图中有两种特殊的结点:一类是接合结点,对应条件分支语句的聚合处,表示在该结点处将判断条件为真为假两种情况下的计算结果求接合(∪操作);另一类是加宽结点,对应循环语句的入口结点,表示该结点是循环语句的开始结点。
(2)从该控制流图的入口点开始,将入口点初始化为抽象域完全格上的最大值T,其他节点则初始化为抽象域完全格上的最小值⊥。根据控制流图的迁移方向利用区间域的基本操作计算程序中各节点处的变量值范围;
区间域的基本操作包括区间域加、减、乘、除、交、并和拓宽,例如给定任意两个区间:D1=[a,b],D2=[m,n]。区间上的交(∩)、并,也称为结合(∪)、拓宽()运算如下:D1∩D2=[max(a,m),min(b,n)];D1∪D2=[min(a,m),max(b,n)];如果m<a,l1=-∞,否则l1=a;如果n>b,l2=+∞,否则l2=b。
(3)当程序中各节点的变量值范围稳定时,变量值范围计算终止,变量值范围计算过程采用迭代计算的方法计算程序中的循环节点;
循环节点均使用有向循环子图来表示,并将循环节点设置为加宽点。加宽点处的抽象值在每次迭代过程中为本次迭代的抽象值和上次迭代的抽象值的替代、接合或者加宽;而且加宽结点必须稳定后,数据流分析才可以继续向前传播。设前一次迭代分析时加宽结点处的抽象值为p1,当前迭代分析时的抽象值为p2,即当且仅当p2 p1时,对循环语句的迭代才可以终止,否则在加宽点进行替代、接合或加宽操作。
针对循环节点的迭代计算,本发明采用循环展开和拓宽延迟相结合的方法,方法如下:
循环节点的迭代计算采用循环展开和延迟拓宽相结合的方法实现:将计算出的变量的新值替换前一次计算出的旧值,在迭代计算到达设定的展开次数之后再设置一定延迟次数,在给定的延迟次数内将每次计算后的变量的新值与前一次计算的旧值求并运算,最终循环迭代次数达到设置的延迟次数之后进行拓宽运算。
采用循环展开策略可以提高分析的精度,但是需要耗费大量计算,因此需要确定合适的展开次数,同时为了加速和保证循环语句迭代计算的收敛,采用拓宽操作,但是采用拓宽操作会带来计算精度的巨大损失,为了提高迭代分析的精度,需要在进行拓宽操作前采用求并(即将前一次迭代计算的抽象值和本次迭代计算的抽象值求并)操作来延迟拓宽操作。
(4)根据待分析的运行时错误类型,在程序中需要检测的节点处将变量值范围信息转化为断言或假设插入程序中;所述的运行时错误类型包括除零操作、数组越界、负数开偶次方和数值溢出;
所述步骤(4)中运行时错误类型分析方法如下;
1)除零运算:在进行除法运算的程序节点处,判断除数变量取值范围是否包含0,如果包含则插入该变量不为0的断言assert(变量!=0),否则不插入断言,同时在该程序节点处以assume()的形式插入除数变量的值范围信息;
2)数组越界:判断数组下标变量值范围是否落于数组最大界和最小界之内,如果大于最大界,则插入该变量小于最大界的断言assert(变量<最大界);如果小于最小界,则插入该变量大于最小界的断言assert(变量>最小界);否则不插入断言,同时在该程序节点处以assume()形式插入数组下标变量的值范围信息;
3)负数开偶次方:在进行开偶次方运算的程序节点处,判断被开方数的值范围是否包含负值,如果包含则插入被开方数为正的断言assert(被开放数>=0),否则不插入断言,同时在该程序点处以assume()形式插入被开方数的值范围信息;
4)数值溢出:判断变量取值范围是否超过机器最大数,如果超过则插入该变量小于机器最大数的断言assert(变量<机器最大数),否则不插入断言,同时在该程序点处以assume()形式插入该变量的值范围信息。
(5)将步骤(4)中带有断言和假设的程序转化为布尔公式,所述的布尔公式包括限制条件和属性,其中限制条件为程序的各赋值语句和假设,属性为断言;
布尔公式转换方法如下:
1)将程序中的break,continue语句转换成goto语句;将程序中的for,dowhile语句转换成while语句;
2)设定循环次数,将转换后的while语句展开成if语句,同时在最后一次循环结束时插入while循环判断条件为假的断言;对后向goto语句采用类似while循环体的方式展开;对调用函数进行展开分析,若是递归函数调用,设定递归次数;经过处理的程序仅包含if、前向goto语句、赋值语句、断言、假设和标签,称之为静态独立程序块(SSA);
3)将SSA转换成布尔公式,包括限制条件(Constraints,简记C)和属性(Property,简记P),其中限制条件为程序的各赋值语句,属性为需要验证的断言。
(6)利用SAT验证器判断步骤(5)中布尔公式中属性的正确性,若验证正确,则进入步骤(7),否则说明存在该类运行时错误并提供相关的反例路径;
布尔公式中属性的正确性判定方法:为了验证属性P是否正确,首先将属性P取反;然后将逻辑公式C∧P进行平坦化操作,转换为合取范式结构(CNF);最后将CNF输入SAT验证器判断公式的可满足性。若满足,说明属性P被违反,也就是说存在某条路径违背了属性P,该断言是不正确的,同时将该条反例路径输出。若不满足,说明不存在任何一条路径违背属性P,该断言是正确的。
(7)说明不存在该类运行时错误,结束分析过程。
下面以一个具体实施例说明本发明的工作过程和具体原理:
以某卫星的中央处理单元软件为例,说明本发明的实施步骤:
(1)验证某卫星的中央处理单元软件的某程序代码片段是否存在数组越界这类运行时错误。首先构造待检测源代码片段(如下段代码所述)的程序控制流图(CFG),如图2所示。
(2)以上述代码段为例,循环展开次数设置为1,拓宽延迟次数也设置为1;沿着图2中的控制流图方向,采用前向迭代算法计算各节点在区间抽象域上的取值信息,各次分析中各节点的抽象值如表1所示:
表1循环体迭代分析中各节点的抽象值
1)第一次迭代结束,采用循环展开策略,将经过第一次迭代计算求得的i和j的新值(Line10节点处,i=[1,1];j=[1,1])代替加宽点处i和j的旧值(Line3节点处,i=[0,0]、j=[0,0]),得到加宽点处i和j的新值(i=[1,1];j=[1,1])。
2)第二次迭代结束,采用拓宽延迟策略,将该次迭代计算求得的值和加宽点处的旧值求并,得到加宽点处i和j的新值i=[1,1]∪[2,2]=[1,2]、j=[1,1]∪[3,3]=[1,3]。
3)第三次迭代结束,采用拓宽操作,将该次迭代计算求得的值和加宽点处的旧值求并,得到加宽点处i和j的新值
4)第四次迭代结束,对循环体加宽结点分析时,发现该结点未经加宽操作的抽象值(i=[2,100],j=[3,+∞])小于第3次迭代分析的抽象值(i=[1,+∞],j=[1,+∞]),从而判定对循环语句的迭代计算已经达到稳定,迭代过程结束。
(3)如上述代码中Line3处定义数组a[100],Line10处存在数组赋值运算a[j-i]=i+j,因而需要检测该处是否存在数组越界,即j-i的值是否在[0,99]之间。通过(2)中的迭代计算,可得循环语句的计算达到稳定时,i和j的值分别为i=[2,100]、j=[3,+∞],因而j-i的值为j-i=[-97,+∞]。+∞大于上界100,则插入小于上界的断言assert(j-i<100);-97小于下界0,则插入大于下界的断言assert(j-i>-1);同时,在该程序点处插入数组下标取值信息assume(-97<=j-i<+∞)。
(4)将带有断言和假设的程序转化为布尔公式,如下述代码段所示。然后利用SAT模型验证器,输入布尔公式,输出所有经过验证后的断言及反例路径。
1)对上述代码段(a)中的while循环体展开,设置循环次数为100,在100次循环结束后,加入while循环判断条件为假的断言,即assert(i>=100);
2)将上述代码段(b)中的if-else结构语句if(i<1)j++;elsej+=2;转换为上述代码段(c)中if(i1<1)j2=j1+1;elsej3=j1+2;j4=(i1<1)?j2:j3;。同时由于存在100次循环,所以需要将本次循环计算所得的i,j值赋给循环入口处的i,j变量,即i1=i2;j1=j4;。
3)将上述代码段(c)循环体中的静态独立程序块转换成布尔公式,其中,限制条件(C)为程序块中的各赋值语句和插入的假设97<=j4-i2<+∞,属性(P)为需要验证的断言j4-i2<100∧j4-i2>-1。
4)为了验证属性P的正确性,首先将属性P取反;然后将逻辑公式C∧P进行平坦化操作,转换为合取范式结构(CNF);最后将CNF输入验证器MiniSat判断公式的可满足性。若满足,说明属性P被违反,也就是说存在某组值违背了属性P,该断言是不正确的,同时生成反例路径。若不满足,说明不存在任何一组值违背属性P,该断言是正确的。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (1)
1.一种基于抽象解释和模型验证的运行时错误分析方法,其特征在于包括以下步骤:
(1)构造待分析程序的控制流图;
(2)从该控制流图的入口点开始,根据控制流图的迁移方向利用区间域基本操作计算程序中各节点处的变量值范围;
(3)当程序中各节点的变量值范围稳定时,变量值范围计算终止,所述变量值范围计算过程采用迭代计算的方法计算程序中出现的循环节点;
(4)根据待分析的运行时错误类型,在待分析程序中需要检测的节点处将变量值范围信息转化为断言或假设并插入程序中;所述的运行时错误类型包括除零操作、数组越界、负数开偶次方和数值溢出;
(5)将步骤(4)中带有断言和假设的程序转化为布尔公式,所述的布尔公式包括限制条件和属性,其中限制条件为程序的各赋值语句和假设,属性为断言;
(6)利用SAT验证器判断步骤(5)中布尔公式中属性的正确性,若验证正确,则进入步骤(7),否则说明存在该类运行时错误并提供相关的反例路径;
(7)说明不存在该类运行时错误,结束分析过程;
所述步骤(2)中区间域的基本操作包括区间域加、减、乘、除、交、并和拓宽;
所述步骤(3)中循环节点的迭代计算采用循环展开和延迟拓宽相结合的方法实现:首先通过预先设置循环展开次数,将计算出的变量的新值替换前一次计算出的旧值,在迭代计算到达设定的展开次数之后再设置一定延迟次数,在给定的延迟次数内将每次计算后的变量的新值与前一次计算的旧值求并运算,最终循环迭代次数达到设置的延迟次数之后进行拓宽运算;
所述步骤(4)中运行时错误类型分析方法如下:
(1)除零运算:在进行除法运算的程序节点处,判断除数变量取值范围是否包含0,如果包含则插入该变量不为0的断言assert(变量!=0),否则不插入断言,同时在该程序节点处以assume()的形式插入除数变量的值范围信息;
(2)数组越界:判断数组下标变量值范围是否落于数组最大界和最小界之内,如果大于最大界,则插入该变量小于最大界的断言assert(变量<最大界);如果小于最小界,则插入该变量大于最小界的断言assert(变量>最小界);否则不插入断言,同时在该程序节点处以assume()形式插入数组下标变量的值范围信息;
(3)负数开偶次方:在进行开偶次方运算的程序节点处,判断被开方数的值范围是否包含负值,如果包含则插入被开方数为正的断言assert(被开放数>=0),否则不插入断言,同时在该程序点处以assume()形式插入被开方数的值范围信息;
(4)数值溢出:判断变量取值范围是否超过机器最大数,如果超过则插入该变量小于机器最大数的断言assert(变量<机器最大数),否则不插入断言,同时在该程序点处以assume()形式插入该变量的值范围信息;
所述步骤(5)中布尔公式转换方法如下:
(1)将程序中的break,continue语句转换成goto语句;将程序中的for,dowhile语句转换成while语句;
(2)设定循环次数,将转换后的while语句展开成if语句,同时在最后一次循环结束时插入while循环判断条件为假的断言;对后向goto语句采用类似while循环体的方式展开;经过处理的程序仅包含if、前向goto语句、赋值语句、断言、假设和标签,称之为静态独立程序块;
(3)将静态独立程序块转换成布尔公式,包括限制条件和属性,其中限制条件为程序的各赋值语句和假设,属性为需要验证的断言。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310529070.1A CN103617115B (zh) | 2013-10-30 | 2013-10-30 | 一种基于抽象解释和模型验证的运行时错误分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310529070.1A CN103617115B (zh) | 2013-10-30 | 2013-10-30 | 一种基于抽象解释和模型验证的运行时错误分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103617115A CN103617115A (zh) | 2014-03-05 |
CN103617115B true CN103617115B (zh) | 2016-02-10 |
Family
ID=50167818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310529070.1A Active CN103617115B (zh) | 2013-10-30 | 2013-10-30 | 一种基于抽象解释和模型验证的运行时错误分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103617115B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317708B (zh) * | 2014-10-21 | 2017-06-13 | 北京邮电大学 | 基于迭代的区间运算的软件测试用例自动生成方法及系统 |
CN104461882B (zh) * | 2014-11-29 | 2017-05-17 | 中国航空工业集团公司第六三一研究所 | 一种符合do‑178b/c a级软件的模型验证方法 |
CN106598852A (zh) * | 2016-12-05 | 2017-04-26 | 广州唯品会信息科技有限公司 | 软件测试方法及系统 |
CN107229568B (zh) * | 2017-06-09 | 2018-09-18 | 华东师范大学 | 带过去时态的线性时态逻辑性质的有界运行时验证方法 |
CN108287767A (zh) * | 2017-12-29 | 2018-07-17 | 五八有限公司 | 一种数据容错方法、设备及计算机可读存储介质 |
CN108462496B (zh) * | 2018-04-24 | 2021-04-02 | 成都吉纬科技有限公司 | 一种基于随机比特流更新的ldpc译码器 |
CN109388573B (zh) * | 2018-10-23 | 2022-03-04 | 北京轩宇信息技术有限公司 | 一种无漏报的中断驱动型程序运行时错误检测方法和系统 |
CN111475420B (zh) * | 2020-05-08 | 2023-04-28 | 中国人民解放军国防科技大学 | 一种基于数值抽象的程序资源使用量自动分析方法 |
CN112257366B (zh) * | 2020-10-13 | 2024-05-07 | 深圳国微芯科技有限公司 | 一种用于等价性验证的cnf生成方法及系统 |
CN114936109A (zh) * | 2022-05-25 | 2022-08-23 | 南通大学 | 一种基于模型检测的反例故障定位方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508766A (zh) * | 2011-09-29 | 2012-06-20 | 中国航天科技集团公司第七一〇研究所 | 一种航天嵌入式c语言软件运行时错误的静态分析方法 |
-
2013
- 2013-10-30 CN CN201310529070.1A patent/CN103617115B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508766A (zh) * | 2011-09-29 | 2012-06-20 | 中国航天科技集团公司第七一〇研究所 | 一种航天嵌入式c语言软件运行时错误的静态分析方法 |
Non-Patent Citations (3)
Title |
---|
基于SMT求解器的路径敏感程序验证;何炎祥等;《软件学报》;20121031;第23卷(第10期);第2655页到第2664页 * |
基于抽象解释的变量值范围分析及应用;王雅文等;《电子学报》;20110228;第39卷(第2期);第296页到第303页 * |
航天嵌入式软件运行时错误静态分析方法;王崑声等;《北京理工大学学报》;20130228;第33卷(第2期);第160页到第165页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103617115A (zh) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103617115B (zh) | 一种基于抽象解释和模型验证的运行时错误分析方法 | |
Clarke et al. | Predicate abstraction of ANSI-C programs using SAT | |
Chaudhuri et al. | Continuity and robustness of programs | |
Chen et al. | Functional test generation using efficient property clustering and learning techniques | |
CN103778061A (zh) | 数组越界错误的自动检测和校正方法 | |
CN101833499A (zh) | 一种基于可达树的软件测试验证方法 | |
Ghassabani et al. | Efficient generation of all minimal inductive validity cores | |
Leung et al. | C-to-verilog translation validation | |
Zhang et al. | A circuit-based SAT solver for logic synthesis | |
Järvisalo et al. | Limitations of restricted branching in clause learning | |
US9058452B1 (en) | Systems and methods for tracing and fixing unknowns in gate-level simulation | |
Malik et al. | A method for considering error propagation in reliability estimation of component-based software systems | |
US20120210173A1 (en) | Error propagation in a system model | |
Bruttomesso et al. | Rewriting-based Quantifier-free Interpolation for a Theory of Arrays | |
Hecht et al. | Tight localizations of feedback sets | |
Deng et al. | Verifying self-stabilizing population protocols with coq | |
De Paula et al. | nuTAB-BackSpace: Rewriting to normalize non-determinism in post-silicon debug traces | |
Zhao et al. | Context-Aware Fault Localization via Control Flow Analysis. | |
Meng et al. | Nonlinear approach for estimating WCET during programming phase | |
Tian | Smart contract defect detection based on parallel symbolic execution | |
Tuerk et al. | Model checking PSL using HOL and SMV | |
Aldughaim et al. | Incremental Symbolic Bounded Model Checking of Software Using Interval Methods via Contractors | |
Wang et al. | C Code Verification based on the Extended Labeled Transition System Model. | |
Qing-xiu et al. | An improved verification method for workflow model based on Petri net reduction | |
Siegel | CIVL solutions to VerifyThis 2016 challenges |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20161018 Address after: 100048 Haidian District, Beijing Fu Cheng Road, No. 16 Patentee after: China Academy of Aerospace Systems Science and Engineering Address before: 100048, Fu Cheng Road, Beijing, Haidian District, No. 14 Patentee before: Beijing information is controlled research institute |