[发明专利]反向调试器和反向调试方法有效
申请号: | 201210267108.8 | 申请日: | 2012-07-30 |
公开(公告)号: | CN103577315B | 公开(公告)日: | 2017-02-22 |
发明(设计)人: | 王帆;李琦;杜久常;陈晓玲;梅丽刚 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市金杜律师事务所11256 | 代理人: | 酆迅 |
地址: | 美国纽*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 反向 调试 方法 | ||
技术领域
本发明涉及程序调试器,更具体地,涉及一种反向调试器和反向调试方法。
背景技术
常用调试器(debugger)的基本功能包括:通过使目标程序触发一个异常将一个运行的程序中断下来,并且使其按照用户的意愿执行;查看软件运行中信息,这些信息包含但不限于当前线程的寄存器信息和内存信息等;以及修改软件执行流程,包括:修改内存信息、寄存器信息等等。
调试器的工作原理是基于中央处理器的异常机制,由操作系统的异常分发(或者事件分发)子系统负责将其封装处理后,以比较友好的方式与调试器进行实时交互。当调试器捕获到一个异常(或事件)之后,将会根据调试器的自身逻辑来判定是否需要接管这个异常(或事件),并决定由调试器的哪个函数来接管。当调试器接管下来这个异常(或事件)后,将根据用户的需求对其进行进一步的处理,处理完毕后再通知系统已经处理完毕,再开始新一轮的异常(或事件)捕获、分发循环。
调试程序的过程中,程序员经常需要知道自己对于程序的调试是否走得太远,先前步骤的执行结果是否正确等,这需要用到反向调试技术。反向调试是调试器中的一种调试方法,该方法允许程序回到程序已经执行过的历史点。目前提供反向调试功能的调试器包括TotalView Technologies公司的TotalView Debugger,以及开源社区的GDB。
理论上讲,一个程序如果想要回到已经执行过的历史点,必须记录该历史点的状态,包括该历史点的和该程序相关的内存值和寄存器值。现有的反向调试功能实现方法要么需要的存储空间太多,要么运行到反向目标断点的时间过长。
发明内容
为了解决现有技术中存在的问题,需要提供一种反向调试器及反向调试方法,使得需要的存储空间合理,并且运行到反向调试目标断点的时间也不太长。
根据本发明的一个方面,提供了一种反向调试程序的方法,包括:
获取编译器输出的该程序的调试信息,所述调试信息中包含该程序的扩展的基本块相关的信息;
响应于该程序进入反向调试,在至少一个扩展的基本块的入口地址设定反向调试检查点;
响应于程序运行到设定的反向调试检查点,存储该反向调试检查点对应的调试需要存储的信息;
响应于接收到设定的反向调试目标断点,
将程序回退到该反向调试目标断点之前的、距离该反向调试目标断点最近的反向调试检查点,并获得该反向调试检查点存储的调试需要存储的信息,并继续执行该程序,直至执行到该反向调试目标断点。
根据本发明的另一个方面,提供了一种反向调试器,包括:
获取装置,被配置为获取编译器输出的该程序的调试信息,所述调试信息中包含该程序的扩展的基本块相关的信息;
设定装置,被配置为响应于该程序进入反向调试,在至少一个扩展的基本块的入口地址设定反向调试检查点;
存储装置,被配置为响应于程序运行到设定的反向调试检查点,存储该反向调试检查点对应的调试需要存储的信息;
回退装置,被配置为响应于接收到设定的反向调试目标断点,将程序回退到该反向调试目标断点之前的、距离该反向调试目标断点最近的反向调试检查点,并获得该反向调试检查点存储的调试需要存储的信息,并继续执行该程序,直至执行到该反向调试目标断点。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算系统的框图;
图2示出了根据本发明一种实施方式的反向调试程序的方法的流程图;
图3给出了基本块和扩展的基本块术语模型图;
图4a示出了Dwarf调试信息中的调试信息入口,图4b示出了编译器产生的Dwarf格式的信息的例子;
图5示意性地示出了根据本发明的一种实施方式在调试信息中加入的扩展的基本块的信息;
图6示出了在反向调试检查点调试器需要存储的信息的一种实施方式;
图7示出了在图3所示的程序中被执行的基本块BB和扩展的基本块EBB以及被加入的目标调试断点;
图8示出了图2所示的调试方法的使用场景;以及
图9示出了反向调试器900的结构框图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210267108.8/2.html,转载请声明来源钻瓜专利网。