[发明专利]一种动态断点的自动生成方法及系统有效
申请号: | 201210447321.7 | 申请日: | 2012-11-09 |
公开(公告)号: | CN102968369A | 公开(公告)日: | 2013-03-13 |
发明(设计)人: | 李丰;霍玮;陈聪明;李龙;衷璐洁;冯晓兵 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 梁挥;祁建国 |
地址: | 100080 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 断点 自动 生成 方法 系统 | ||
1.一种动态断点的自动生成方法,其特征在于,包括:
步骤1,在程序执行过程中,利用动态插桩技术,收集程序语句的执行实例,实例之间的执行顺序以及依赖关系,依此创建动态依赖图;
步骤2,利用程序动态切片技术,提取动态依赖图与程序失效描述相关的部分;
步骤3,将步骤2输出的动态依赖图中的结点和边互换,将调试范围转化成状态流程图;
步骤4,生成动态断点以及断点处需要检查的表达式的集合;
步骤5,收集用户对所提供的断点以及断点处需要检查的表达式的集合的判断结果,根据该判断结果,更新调试范围和失效描述,并将控制转移到步骤2或步骤3。
2.如权利要求1所述的动态断点的自动生成方法,其特征在于,所述步骤1还包括:
步骤21,动态插桩技术通过在程序执行过程中在线的插入记录代码,收集用户所关注的动态执行信息,所述动态执行信息为所执行的语句实例,以及其中每个变量的值;
步骤22,动态依赖分析技术将依据所述动态执行信息,分析程序执行过程中的动态依赖关系,所述动态依赖关系为动态数据依赖关系和动态控制依赖关系。
3.如权利要求2所述的动态断点的自动生成方法,其特征在于,所述步骤22还包括:
步骤31,分析动态控制依赖关系时,语句实例s动态控制依赖于语句实例t,当且仅当,执行轨迹上存在一条从t到s的路径,s后控制该路径上除t之外的所有结点,但不后控制t;
步骤32,分析动态数据依赖关系时,语句实例s动态数据依赖于t,当且仅当,t定义了变量a的一个实例,s使用了该实例,并且从t到s的路径上没有对该实例的定值。
4.如权利要求1所述的动态断点的自动生成方法,其特征在于,所述步骤2还包括:
步骤41,读取由用户指定的程序失效描述;
步骤42,对于程序失效描述中的每个二元组<var,inst>,采用动态程序切片技术,从动态依赖图中提取变量var的第inst个实例所直接或间接依赖的所有语句实例的集合,共同构成新一轮迭代的调试范围;
步骤43,调试过程中每轮迭代的分析范围都映射成动态依赖图的一个子图。
5.如权利要求1所述的动态断点的自动生成方法,其特征在于,所述步骤3还包括:
步骤51,有向图中的结点对应程序执行过程中的状态,结点间的有向边代表状态迁移;
步骤52,有向边上的标签代表决定从边的源点指代的状态到边的终点指代的状态之间迁移的一个约束条件,一个新状态的产生由其所有入边上的约束条件共同决定。
6.如权利要求1所述的动态断点的自动生成方法,其特征在于,所述步骤4还包括:
步骤61,计算状态流程图的最小割集;割是状态流程图的一个划分,划分产生两个结点集合,属于不同结点集合的结点互不连通,割的大小为跨越它的所有有向边的数量,上述有向边的集合称为该图的割集,其中,规模最小的割集称为最小割集;
步骤62,在将生成的最小割集映射成断点时,选择上述割集中边的源点在执行轨迹上对应的位置作为断点的位置,如果割集中,边的源点不唯一,则选择其中执行顺序最靠后的点在执行轨迹上的位置作为断点位置;
步骤63,将割集中各边上的标签构成的集合作为断点位置上需要检查的表达式集合。
7.如权利要求1所述的动态断点的自动生成方法,其特征在于,所述步骤5还包括:
步骤71,收集用户对断点处表达式集合的判断结果,判断结果为分两种,1、集合中的所有表达式在断点处的计算结果均符合设计预期,2、其中至少有一个表达式的计算结果不符合程序设计意图;
步骤72,根据步骤71收集到的结果,更新调试范围和失效描述,并将控制转移到步骤2或步骤3。
8.如权利要求7所述的动态断点的自动生成方法,其特征在于,所述步骤72还包括:
步骤81,对于步骤72集合中的所有表达式在断点处的计算结果均符合设计预期的情况,提取当前动态依赖图位于断点之后的部分,作为新的调试范围,并返回步骤3;
步骤82,对于步骤72其中至少有一个表达式的计算结果不符合程序设计意图的情况,提取当前动态依赖图上位于断点之前的部分,并根据调试人员列出的错误表达式更新失效描述,然后返回步骤2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210447321.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:非核苷类逆转录酶抑制剂
- 下一篇:一种基于普通车床的可拆卸模块化铣附件