[发明专利]用于动态二进制翻译的调试方法有效
申请号: | 200810033743.3 | 申请日: | 2008-02-21 |
公开(公告)号: | CN101241444A | 公开(公告)日: | 2008-08-13 |
发明(设计)人: | 管海兵;梁阿磊;郑举育 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海交达专利事务所 | 代理人: | 毛翠莹 |
地址: | 200240*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种用于动态二进制翻译的调试方法,提供了一种适用于动态二进制翻译器的调试方法。本发明改进了通用调试器的断点,单步等基本功能,使之更适合于动态二进制翻译器的调试;本发明改进的观察点功能用来监视内存的访问与读写,比传统调试器观察点的实现方法复杂但功能更强大,可以观察程序在执行时的内部活动,在程序出错时及时发现问题,定位错误在程序中的位置;本发明为动态二进制翻译器的调试器引入了回退执行的新功能,提出了一种二进制级别的非精确回退执行算法,它能回退执行在二进制翻译平台中运行的任意二进制代码,节省了执行时间较长的程序的调试时间,大大提高了程序员定位错误的速度,是虚拟机开发人员排错定错的有力工具。 | ||
搜索关键词: | 用于 动态 二进制 翻译 调试 方法 | ||
【主权项】:
1、一种用于动态二进制翻译的调试方法,其特征在于包括如下步骤:1)利用动态二进制翻译器运行源机器程序,当在源机器程序中设置断点暂停源机器程序的执行时,利用二进制翻译器将断点位置的源机器指令翻译为目的机器中的异常指令,在目的机器代码的执行过程中遇到该异常指令时就暂停执行,使用一个映射表支持源机器地址与物理机器动态地址的映射关系,通过查找该映射表来确定源机器程序暂停的位置;2)当在源机器程序中设置观察点来跟踪源机器程序变量值或表达式值的变化时,二进制翻译器在支持硬件内存断点的机器上通过内存断点来暂停程序执行,或者利用内存映射过程来暂停程序执行;3)在源机器程序暂停位置,通过读取模拟的源机器地址空间中的内存数据和模拟的中央处理单元寄存器的数据,检查源机器程序在断点处运行结果是否正确,如果运行结果不正确则记录下错误在源机器程序中的位置,停止源机器程序运行并对错误进行修正,然后返回步骤1)继续查找错误,直到在源机器程序中查找不到错误为止,结束调试;如果运行结果正确,则继续往下检查源机器程序;4)继续检查源机器程序时,采用逐条检查或检查下一个断点或回退方式进行;采用逐条检查断点之后源机器程序时,从暂停位置单步执行源机器程序,二进制翻译器创建一个仅包含当前指令的基本块,然后执行该基本块,该基本块执行结束后在源机器程序下一条指令处暂停,重复步骤3);采用检查下一个断点处源机器程序运行状态时,从当前暂停位置继续执行源机器程序,遇到下一个断点时暂停源机器程序,重复步骤3);采用回退方式时,从暂停位置回退执行源机器程序,定义块上下文数据结构由程序寄存器当前值、当前栈顶的数据、该基本块所用到的全局地址和动态分配的内存地址四部分组成,在基本块执行之前将程序的运行状态和机器状态保存到该基本块的块上下文结构中,且保存最近被执行到的基本块的块上下文链表且按执行顺序存放;二进制翻译器从块上下文链表中取出最近被执行的基本块的块上下文,根据该块上下文将源机器状态和源机器程序状态还原到执行该基本块之前的状态,然后利用单步执行,执行到暂停位置的上一条指令为止,暂停源机器程序,重复步骤3)。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200810033743.3/,转载请声明来源钻瓜专利网。