当前位置: 首页 > 专利查询>东南大学专利>正文

基于路径特征的程序执行轨迹状态自动获取方法技术

技术编号:11126578 阅读:115 留言:0更新日期:2015-03-11 16:04
本发明专利技术公开了一种基于路径特征的程序执行轨迹状态自动获取方法,通过静态分析程序数据流和控制流结构定义程序路径的特征集合及相关的推理规则,并利用程序执行的路径特征自动地推理每个程序节点在该次执行中的(一个或多个)状态;对于多条需要获知节点状态的路径可以同时计算,过程简便,成本低廉。

【技术实现步骤摘要】
一种基于路径特征的程序执行轨迹状态自动获取方法
本专利技术涉及一种基于路径特征的程序执行轨迹状态自动获取方法,属于软件维护中的故障定位领域。
技术介绍
故障定位是软件维护过程中最重要的步骤之一,通过对测试中的程序正确执行和失效执行的分析来对程序中故障可能存在的位置进行推测,主要有人工、自动化和半自动化等几类方法。人工定位方法依赖于软件工程师的经验及其对该程序的熟知程度,往往效率较低,过程难以控制;自动化或半自动化方法通过比对程序执行中的各类信息对程序各个位置可能存在故障的可能性进行计算,能够处理大规模的程序和执行,效率较高,应用广泛,同时定位精度成为了每种方法的关键要素。节点状态是概率化故障定位方法中普遍采用的一种信息,此类方法通过各个节点在执行中的状态来分析故障的产生可能由哪些节点的执行(或不执行)所引起。由于对程序执行进行了具体、真实的分析,一般定位精度较高,效果较好。但是此类方法需要程序源码、执行路径和节点状态三项输入,尤其是节点的状态涉及复杂的变量定义和使用,较为难以获得。针对这一问题,目前普遍采用的方法较为简单,一般通过插桩的方式使得目标程序在执行过程中能够记录所有执行节点的状态。由于程序中节点众多,每个节点可能含有多个状态分量,所以这种处理方式效率很低。本专利技术考虑通过抽取路径的实质特征来精简插桩节点,并通过结合静态分析的方法减免部分收集节点状态分量的工作。
技术实现思路
技术问题:本专利技术提供一种利用程序的执行路径和源码信息来自动计算执行中各个节点每次出现的状态,能够根据源码分析出静态视图中各个节点的变量定义和使用情况,信息易于获取、运行效率高的基于路径特征的程序执行轨迹状态自动获取方法。技术方案:本专利技术的基于路径特征的程序执行轨迹状态自动获取方法,包括如下步骤:步骤1)通过静态分析程序源码获知程序控制流图和所述程序控制流图中每个节点N的定义变量集合{dN}、使用变量集合{uN};步骤2)从所述程序控制流图中抽取能作为程序特征的边,组成特征集合{Ex},然后用所述特征的序列表示每条路径;步骤3)通过程序控制流图、{dN}、{uN}和{Ex}推导出“特征序列-节点状态”推理规则,所述推理规则由条件和结论两部分组成,所述条件是特征序列,所述结论是路径中一个节点的一项状态分量,基于推理规则,能够通过任一条路径中的特征序列计算该路径中每个节点的状态分量;步骤4)针对待分析的每条执行路径,通过推理规则和该路径的特征序列计算路径上每个节点的所有状态分量,最终得到的每个节点的状态;步骤5)对于所述步骤4)中计算得到的状态分量为空的节点,即未涉及任何变量的节点,将其状态标记为┬,符号┬表示执行。本专利技术方法的优选方案中,步骤3)中推导出“特征序列-节点状态”理规则的具体流程为:(a)针对程序中涉及的每个变量,统计出每个变量vi的定义节点集合{Ni},i为变量编号(b)计算从{Ni}中每个节点Na到每个使用变量vi的节点Nb之间的必经特征集合{Ed}和禁止特征集合{Ef}={E1,E2,…,Em},m为集合{Ef}中元素的个数;(c)按照如下规则将所述{Ed}和{Ef}组合为特征序列:对于{Ed}中的每个元素Ex,从Ex到节点Nb的路径不经过禁止特征集合{Ef};(d)以所述特征序列为条件、Nb:da(vi)为结论,构建得到“特征序列-节点状态”推理规则Ex(E1,E2,…,Em)=>Nb:da(vi),其中Nb:da(vi)表示“da(vi)是Nb节点的一个状态分量,该状态分量是由Na节点进行的vi变量定义在Nb节点有效”。本专利技术方法中,步骤(b)中,必要特征集合为:从节点Na到节点Nb的不经过{Ni}中任意元素的路径所必然经过的特征组成的集合;禁止特征集合为:从节点Na到节点Nb的不经过{Ni}中任意元素的路径所必然不经过的特征组成的集合。本专利技术方法的优选方案中,步骤4)中计算路径上节点的状态分量的具体流程为:(a)以路径中节点作为分割点,将路径对应的特征序列划分为前后两段;(b)以该节点之前的特征序列片段匹配每条“特征序列-节点状态”推理规则,在符合规则的条件下推导出该节点的每个状态分量;(c)组合该节点的所有状态分量,即得到该节点的状态。本专利技术方法的优选方案中,步骤2)中抽取的能作为程序特征的边为程序控制流图中程序入口边和所有不属于最小生成树的边。本专利技术方法主要是利用程序的执行路径结合静态的源码分析自动地统计程序执行中各个节点的状态,以降低基于节点状态的故障定位技术的应用成本。有益效果:本专利技术方法通过结合路径执行特征和源码分析结合的方式自动计算执行中的节点转台,与现有技术相比,本专利技术具有以下优点:(1)需要的信息易于获取。概率化的故障定位技术(如PPDG,ProbabilisticProgramDependencyGraph)一般需要三项输入:执行路径、程序源码和节点状态,现有方法对执行路径和节点状态这两项的信息收集过程是独立的,需要分别进行,而本专利技术方法以路径特征序列和程序源码作为输入,进行节点状态的计算,减少了对输入信息的要求。(2)计算成本低廉。现有方法收集执行路径和计算节点状态时分别需要在程序源码上进行插桩,记录执行路径以及每个变量的定义和使用情况。本专利技术方法通过定义路径特征来简化路径表示,减少了插桩的数量(收集执行路径和计算节点状态时,仅需要在路径特征处实施插桩),进而减少了插桩语句对程序执行效率的影响,与现有方法相比提高了运行效率。附图说明图1是本专利技术方法的流程图。图2是本专利技术的路径特征例图,用于说明对执行路径的特征定义和实现。图3是图2中的最小生成树。图4是图2中路径特征集合。图5是本专利技术的推理规则例图。表示本专利技术中对相关推理规则的设计和应用。图6是本专利技术的实施例图。表示实施例中相关内容。具体实施方式下面结合附图对专利技术的技术方案进行详细说明:本专利技术利用程序执行的路径信息和所执行语句的数据定义、使用信息,通过自动化的路径特征提取和推理,对程序执行轨迹状态进行计算,强调计算过程的简单易行和计算结果的精确性。一、体系结构图1给出了基于路径特征的程序执行轨迹状态自动获取方法设计体系结构。下面给出几个主要部分的具体说明。1静态分析组件本组件的功能为:通过分析目标程序的源码,获取相关的控制流信息和数据流信息,进而通过分析控制流信息得出该程序执行的路径特征集合,并通过结合控制流和数据流的信息构建路径特征与执行轨迹状态之间的推理规则。路径特征集合是程序控制流图中所有边的一个子集。本专利技术中使用的路径特征包括程序入口边和控制流图中所有不属于最小生成树的边。假设有如图2的程序结构,其中包含四个程序节点A、B、C和D,以及五条边AB、BC、CB、CD和DB。该程序的一个最小生成树如图3所示,那么可以得到路径特征为{AB,CB,DB},如图4中双线所示。特征所构成的序列与程序中所有的路径一一对应。如图2中路径ABCBCD,其特征序列为AB、CB,对比图可知符合该特征序列的路径只有ABCBCD。节点状态的每个分量是一个该节点使用变量的定义情况,即在执行到该节点时,所执行到的每个变量最后一个定义位置。这样的位置与程序执行有关,可以从程序控制流图中归纳该位置对应的执行路径的特点,将这一特点转化为等价的特征序列本文档来自技高网...
基于路径特征的程序执行轨迹状态自动获取方法

【技术保护点】
一种基于路径特征的程序执行轨迹状态自动获取方法,其特征在于,该方法包括如下步骤:步骤1)通过静态分析程序源码获知程序控制流图和所述程序控制流图中每个节点N的定义变量集合{dN}、使用变量集合{uN};步骤2)从所述程序控制流图中抽取能作为程序特征的边,组成特征集合{Ex},然后用所述特征的序列表示每条路径;步骤3)通过程序控制流图、{dN}、{uN}和{Ex}推导出“特征序列‑节点状态”推理规则,所述推理规则由条件和结论两部分组成,所述条件是特征序列,所述结论是路径中一个节点的一项状态分量,基于推理规则,能够通过任一条路径中的特征序列计算该路径中每个节点的状态分量;步骤4)针对待分析的每条执行路径,通过推理规则和该路径的特征序列计算路径上每个节点的所有状态分量,最终得到的每个节点的状态;步骤5)对于所述步骤4)中计算得到的状态分量为空的节点,即未涉及任何变量的节点,将其状态标记为┬,符号┬表示执行。

【技术特征摘要】
1.一种基于路径特征的程序执行轨迹状态自动获取方法,其特征在于,该方法包括如下步骤:步骤1)通过静态分析程序源码获知程序控制流图和所述程序控制流图中每个节点N的定义变量集合{dN}、使用变量集合{uN};步骤2)从所述程序控制流图中抽取能作为程序特征的边,组成特征集合{Ex},然后用所述特征的序列表示每条路径;步骤3)通过程序控制流图、{dN}、{uN}和{Ex}推导出“特征序列-节点状态”推理规则,所述推理规则由条件和结论两部分组成,所述条件是特征序列,所述结论是路径中一个节点的一项状态分量,基于推理规则,能够通过任一条路径中的特征序列计算该路径中每个节点的状态分量;步骤4)针对待分析的每条执行路径,通过推理规则和该路径的特征序列计算路径上每个节点的所有状态分量,最终得到的每个节点的状态;步骤5)对于所述步骤4)中计算得到的状态分量为空的节点,即未涉及任何变量的节点,将其状态标记为┬,符号┬表示执行。2.根据权利要求1所述的基于路径特征的程序执行轨迹状态自动获取方法,其特征在于,所述步骤3)中推导出“特征序列-节点状态”推理规则的具体流程为:(a)针对程序中涉及的每个变量,统计出每个变量vi的定义节点集合{Ni},i为变量编号;(b)计算从{Ni}中每个节点Na到每个使用变量vi的节点Nb之间的必经特征集合{Ed}和禁止特征集合{Ef}={E1,E2,…,Em},m为集合{Ef}中元素的个数;(c)按照如下规则将所...

【专利技术属性】
技术研发人员:王璐璐李必信廖力周颖
申请(专利权)人:东南大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1