一种基于全局超级块支配图的插桩位置获取方法_2

文档序号:8942994阅读:来源:国知局
方法如下:
[0029]图1、2所示为本发明的插粧位置获取方法的总流程示意图,包括:
[0030]步骤101,由所述被测程序生成所述函数调用关系图;
[0031]步骤102,判断所述函数调用关系图是否为循环图,如果所述函数调用关系图为非循环图,则转步骤103,如果所述函数调用关系图为循环图,则转步骤105 ;
[0032]步骤103,对所述函数调用关系图进行拓扑排序,即:
[0033]I)遍历所述函数调用关系图,根据所述函数调用关系图中节点之间的关系获取每个节点的入度;
[0034]2)选取入度为O的节点输出;
[0035]3)将所有从步骤2中输出节点直接到达的节点的入度减I ;
[0036]4)重复2和3步骤,输出节点的序列即为所述函数调用关系图的有序序列。
[0037]步骤104,由所述被测程序获取所述局部超级块支配图;
[0038]步骤105,通过连续合并排好序的所述局部超级块支配图生成所述全局超级块支配图,即根据排好序的所述局部超级块支配图,依次在所选所述局部超级块支配图中调用节点处添加到该节点所到目标所述局部超级块支配图的入口节点的边;
[0039]步骤106,利用所述函数调用关系图建立嵌套循环树,即对所有有出入弧的循环头做一次深度搜索,然后以相反的顺序检验相对应的循环来确定是否含有外部调用节点,同样自下而上的建立嵌套循环树;
[0040]步骤107,根据所述局部超级块支配图和所述嵌套循环树建立循环树支配图,简化所述循环树支配图生成所述全局超级块支配图,即根据嵌套循环树的节点之间的关系为所述局部超级块支配图添加其所到目标局部超级块支配图的边;
[0041]步骤108,遍历所述全局超级块支配图,生成所述全局超级块支配图中超级块节点与子节点数量的超级块映射表,其中超级块映射表是由所述全局超级块支配图的超级块节点的地址和所述超级块节点在所述全局超级块支配图中的子节点个数组成,超级块映射表中超级块节点的地址为所述超级块映射表的键,而所述子节点个数为所述超级块映射表的值,其具体包括以下子步骤,如图2所示:
[0042]步骤1081,以深度搜索的方式遍历超级块映射表;
[0043]步骤1082,判断超级块映射表中映射值是否为空或1,是则转到1087,否则转到1083 ;
[0044]步骤1083,在所述全局超级块支配图中标记超级块节点的子节点为已覆盖;
[0045]步骤1084,在所述全局超级块支配图中从被访问的超级块开始前向遍历;
[0046]步骤1085,在所述全局超级块支配图中从被访问的超级块开始后向遍历;
[0047]步骤1086,判断所述全局超级块支配图的入口节点和出口节点是否已覆盖,如果是则转到1087 ;
[0048]步骤1087,添加被访问的超级块到插粧位置集合中。
[0049]步骤109,输出步骤108产生的插粧位置集合。
[0050]本实施例提供的基于全局超级块支配图的插粧方法,根据程序的函数调用关系图,生成全局超级块支配图,然后依据该全局超级块支配图获取插粧位置,明显减少了插粧位置的数量,显著提高了插粧后程序的执行效率。
[0051]应该指出的是,以上所述仅为本发明的一个实施案例,并不能因此而认为是对本发明的保护范围的限制,在不脱离本发明的核心思想的所有等效改进和润饰,均属于本发明的保护范围。
【主权项】
1.一种基于全局超级块支配图的插粧位置获取方法,其特征在于:包括以下步骤: 步骤1:由被测程序获取函数调用关系图,函数调用关系图分为非循环图和循环图,对于非循环图,对函数调用关系图进行拓扑排序,通过连续合并排好序的局部超级块支配图生成全局超级块支配图;对于循环图,利用所述函数调用关系图建立嵌套循环树,根据所述局部超级块支配图和所述嵌套循环树建立循环树支配图,简化所述循环树支配图生成所述全局超级块支配图; 步骤2.遍历步骤I所述全局超级块支配图,生成所述全局超级块支配图中超级块节点与所述超级块节点在所述全局超级块支配图中子节点数量的超级块映射表; 步骤3.遍历所述超级块映射表,将超级块映射表中映射值为空或一条目的超级块节点添加到插粧位置集合中; 步骤4.遍历所述超级块映射表,获得所述超级块映射表中的超级块节点,在所述全局超级块支配图中标记所述超级块节点的子节点为已覆盖; 步骤5.在所述全局超级块支配图中前向和后向遍历,如果全局超级块支配图的入口节点和出口节点已覆盖,则将所述超级块节点添加到插粧位置集合中。2.根据权利要求1所述的基于全局超级块支配图的插粧位置获取方法,其特征在于:在步骤I中,所述超级块支配图是指由超级块以及超级块之间的关系构成的图,所述超级块为基本块支配图的强连通分量。3.根据权利要求1所述的基于全局超级块支配图的插粧位置获取方法,其特征在于:在步骤I中,所述局部超级块支配图是指所述被测程序中函数的超级块支配图,由函数中的语句块以及语句块之间的关系构成的图。4.根据权利要求1所述的基于全局超级块支配图的插粧位置获取方法,其特征在于:在步骤I中,所述全局超级块支配图是指所述被测程序的超级块支配图,由所述局部超级块支配图以及所述局部超级块支配图之间的关系构成的图。5.根据权利要求1所述的基于全局超级块支配图的插粧位置获取方法,其特征在于:所述嵌套循环树是指对所述函数调用关系图中所有有出入弧的循环头进行搜索,然后以相反的顺序检验相对应的循环确定是否含有外部调用节点,自下而上建立的树称为嵌套循环树。6.根据权利要求2所述的基于全局超级块支配图的插粧位置获取方法,其特征在于:所述基本块支配图是指在支配树中添加蕴含树里与支配树相同节点的边而成的图;所述支配树是指由语句块以及语句块之间的支配关系构成的图,所述支配关系是指在有向图中入口节点到目标节点必须经过另外一个中间节点,则所述中间节点支配所述目标节点,如果所有支配所述目标节点的节点支配所述中间节点,则称所述中间节点为所述目标节点的直接支配点。7.根据权利要求6所述的基于全局超级块支配图的插粧位置获取方法,其特征在于:所述蕴含树是指由语句块以及语句块之间的蕴含关系构成的图,其中蕴含关系是指在有向图中当前节点到达出口节点必须经过另外一个中间节点,则所述当前节点蕴含所述中间节点,如果所有蕴含所述中间节点的节点蕴含所述当前节点,则称所述当前节点为所述中间节点的直接蕴含点。
【专利摘要】本发明公开了一种基于全局超级块支配图的插桩位置获取方法,应用于计算机软件测试和软件可靠性保障领域。所述方法包括以下步骤:根据局部超级块支配图和函数调用关系图生成全局超级块支配图;对全局超级块支配图进行节点关系分析,最终获取最少数量的插桩位置。本发明可有效减少被测程序中插桩点的数量,从而显著提高插桩后被测程序的运行效率。
【IPC分类】G06F11/36
【公开号】CN105159835
【申请号】CN201510703492
【发明人】康一梅, 王天凤
【申请人】北京航空航天大学
【公开日】2015年12月16日
【申请日】2015年10月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1