[发明专利]反向调试器和反向调试方法有效
申请号: | 201210267108.8 | 申请日: | 2012-07-30 |
公开(公告)号: | CN103577315B | 公开(公告)日: | 2017-02-22 |
发明(设计)人: | 王帆;李琦;杜久常;陈晓玲;梅丽刚 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市金杜律师事务所11256 | 代理人: | 酆迅 |
地址: | 美国纽*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 反向 调试 方法 | ||
1.一种反向调试程序的方法,包括:
获取编译器输出的该程序的调试信息,所述调试信息中包含该程序的扩展的基本块相关EBB的信息;
响应于该程序进入反向调试,在至少一个扩展的基本块的入口地址设定反向调试检查点;
响应于程序运行到设定的反向调试检查点,存储该反向调试检查点对应的调试需要存储的信息;
响应于接收到设定的反向调试目标断点,将程序回退到该反向调试目标断点之前的、距离该反向调试目标断点最近的反向调试检查点,并获得该反向调试检查点存储的调试需要存储的信息,并继续执行该程序,直至执行到该反向调试目标断点。
2.根据权利要求1所述的方法,其中所述扩展的基本块相关的信息由该编译器构造,并且存储在该编译器输出的调试信息中。
3.根据权利要求1所述的方法,其中调试需要存储的信息至少包括寄存器的值,相关内存空间的值。
4.根据权利要求3所述的方法,其中寄存器的值为在当前反向调试检查点的寄存器的原始值,相关内存空间的值为在当前反向调试检查点和下一个反向调试检查点之间发生变化的内存空间的原始值。
5.根据权利要求4所述的方法,其中所述获得该检查点存储的调试需要存储的信息包括:
响应于要恢复在反向调试检查点k的调试需要存储的信息,将在反向调试检查点n,n-1,......k+1,k存储的调试需要存储的信息恢复出来,从发向调试检查点n开始反向一步一步恢复出相关内存和全部寄存器在检查点k的原始值,其中k和n为正整数,并且n>k。
6.根据权利要求1所述的方法,其中还包括响应于接收到的设定的反向调试目标断点为多个:
获得最晚执行的反向调试目标断点,
将程序回退到该最晚执行的反向调试目标断点之前的,距离该最晚执行的反向调试的目标断点最近的反向调试检查点,
恢复该反向调试检查点存储的初始内存值和寄存器值,
继续反向执行该程序,直至执行到该最早执行的反向调试目标断点。
7.根据权利要求6所述的方法,其中所述获得该多个反向调试目标断点中最晚执行的反向调试目标断点包括:
获得并存储EBB的执行顺序以及EBB中包含的BB的关系;
对于任意两个反向调试目标断点,根据下列各项之一获得目标断点的执行顺序:
1)该两个反向调试目标断点属于不同的EBB,根据它们所在的EBB的执行顺序获得其执行顺序;
2)该两个反向调试目标断点属于相同的EBB并且属于同一BB,根据其地址大小获得其执行顺序;
3)该两个反向调试目标断点属于相同的EBB,但是属于不同BB,根据其所在BB在EBB的父子关系获得其执行顺序。
8.根据权利要求1所述的方法,其中还包括:
获得并存储EBB的执行顺序以及EBB中执行的BB;
响应于设定的反向调试目标断点根据存储的EBB的执行顺序以及EBB中执行的BB,被判别为不可以被反向调试,发出警告。
9.根据权利要求1所述的方法,其中所述继续执行该程序,直至执行到该反向调试目标断点包括:
对从回退到的该反向调试目标断点之前的,距离该反向调试目标断点最近的反向调试检查点到该目标调试断点之间的每一条指令设定反向调试检查点;
响应于程序运行到设定的反向调试检查点,存储该检查点对应的调试需要存储的信息;
响应于接收到设定的另一反向调试目标断点,并且该设定的反向调试目标断点位于从回退到的该反向调试目标断点之前的,距离该反向调试目标断点最近的反向调试检查点到该反向调试目标断点之间,将程序回退到该另一反向调试目标断点前一条指令对应的另一反向调试检查点,并获得该另一反向调试检查点存储的调试需要存储的信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210267108.8/1.html,转载请声明来源钻瓜专利网。