[发明专利]一种动态断点的自动生成方法及系统有效
申请号: | 201210447321.7 | 申请日: | 2012-11-09 |
公开(公告)号: | CN102968369A | 公开(公告)日: | 2013-03-13 |
发明(设计)人: | 李丰;霍玮;陈聪明;李龙;衷璐洁;冯晓兵 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 梁挥;祁建国 |
地址: | 100080 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 断点 自动 生成 方法 系统 | ||
技术领域
本发明涉及计算机调试领域,尤其涉及一种动态断点的自动生成方法及系统。
背景技术
程序调试是发现并减少计算机程序中错误的过程。典型的调试流程包括三步:
1)复现错误执行过程。
2)设置一个检查位置,并检查该位置上的程序状态是否符合设计预期。其中,对指定位置上程序状态的检查表现为对该位置上一组可见表达式的计算结果的检查。
3)根据2)的检查结果,选择下一个检查位置,直至定位到导致程序执行失败的根源语句。
上述过程是一个将错误查找范围从全程序执行轨迹向错误原因所在的位置逐步收敛的过程,其间包含若干次迭代,每次迭代对应一次断点的选择、命中与检查。在每一次迭代,调试人员针对当前需要分析的程序轨迹(整个程序执行轨迹的一个子集),选定一个检查位置,一旦确定该位置上的程序执行状态是否符合程序设计意图,即可初步判断该位置与错误的初始触发位置间的先后顺序。上述方法决定了以断点位置为界分割出两部分轨迹中将有一个部分被作为新一轮迭代的分析范围。然而,在实际调试过程中,对断点的选择、检查以及对收敛方向的判断面临如下问题:
1)断点的可判性。程序执行轨迹上某个位置对应的程序状态表现为一组表达式在该位置上的计算结果。为判断某个位置上的程序状态是否符合设计意图,调试人员必须明确该位置上所有可见表达式的预期计算结果。这就要求调试人员对所调试的程序乃至其设计意图有充分的了解。通常情况下,程序规模越大、越复杂,理解难度越高,调试人员对预期计算结果的分析也越繁重。
2)断点的有效性。从程序依赖的角度,程序中并非每条语句的执行都与程序的失效表现之间存在直接或间接的依赖关系。为减轻调试人员分析和理解程序的负担,应尽量避免对与失效表现无关的程序语句的计算结果的判断。对冗余语句计算结果的检查固然会导致不必要的分析负担,而一旦遗漏了与错误相关的表达式,也可能导致调试范围向相反的方向收敛,从而降低调试效率,最坏情况下可能无法定位到错误源。如何选择有效的断点,以避免上述情况?
3)断点的检查效率。如前所述,对程序执行轨迹上某个状态的检查表现为对该位置上一组可见表达式的计算结果的检查。不同位置上,与程序失效表现间存在直接或间接依赖关系的表达式的数量各不相同。因此,选择不同位置设置断点,需要检查的表达式数量也不尽相同。通常情况下,所选断点处的需要检查的表达式数量越多,调试人员的检查负担也越繁重。如何维持尽可能少的交互量,以减轻调试人员的负担?
发明内容
为解决上述问题,本发明的目的为减轻调试人员的分析和理解程序的负担,弱化调试人员的经验或对被调试程序的理解程度对调试效率的影响,本发明针对待调试的程序以及程序的一条错误执行轨迹,利用图论中最小割集的性质,提出一种动态断点的自动生成方法和系统,并确保所选断点处与调试人员间的交互信息量最小。
本发明公开一种动态断点的自动生成方法,包括:
步骤1,在程序执行过程中,利用动态插桩技术,收集程序语句的执行实例,实例之间的执行顺序以及依赖关系,依此创建动态依赖图;
步骤2,利用程序动态切片技术,提取动态依赖图与程序失效描述相关的部分;
步骤3,将步骤2输出的动态依赖图中的结点和边互换,将调试范围转化成状态流程图;
步骤4,生成动态断点以及断点处需要检查的表达式的集合;
步骤5,对于所提供的断点以及断点处需要检查的表达式的集合进行判断,根据该判断结果,更新调试范围和失效描述,并将控制转移到步骤2或步骤3。
所述的动态断点的自动生成方法,所述步骤1还包括:
步骤21,动态插桩技术通过在程序执行过程中在线的插入记录代码,收集用户所关注的动态执行信息,所述动态执行信息为所执行的语句实例,以及其中每个变量的值;
步骤22,动态依赖分析技术将依据所述动态执行信息,分析程序执行过程中的动态依赖关系,所述动态依赖关系为动态数据依赖关系和动态控制依赖关系。
所述的动态断点的自动生成方法,所述步骤22还包括:
步骤31,分析动态控制依赖关系时,语句实例s动态控制依赖于语句实例t,当且仅当,执行轨迹上存在一条从t到s的路径,s后控制该路径上除t之外的所有结点,但不后控制t;
步骤32,分析动态数据依赖关系时,语句实例s动态数据依赖于t,当且仅当,t定义了变量a的一个实例,s使用了该实例,并且从t到s的路径上没有对该实例的定值。
所述的动态断点的自动生成方法,所述步骤2还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210447321.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:非核苷类逆转录酶抑制剂
- 下一篇:一种基于普通车床的可拆卸模块化铣附件