CN102541727A - 一种程序调试方法及系统 - Google Patents
一种程序调试方法及系统 Download PDFInfo
- Publication number
- CN102541727A CN102541727A CN2010105940068A CN201010594006A CN102541727A CN 102541727 A CN102541727 A CN 102541727A CN 2010105940068 A CN2010105940068 A CN 2010105940068A CN 201010594006 A CN201010594006 A CN 201010594006A CN 102541727 A CN102541727 A CN 102541727A
- Authority
- CN
- China
- Prior art keywords
- instruction
- platform
- program
- conversion
- space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种程序调试方法及系统,能够将针对尚未研制成功的CPU芯片的程序转换为针对已研制成功并可靠性高的CPU芯片体系结构上的程序,并使用标准的调试器进行调试,对程序的正确性和性能进行分析和评估,从而避免了使用体系结构模拟器进行模拟所带来的处理速度慢、可靠性低的缺点。由于使用了已有的硬件资源和标准的调试器,所以处理速度较快,并且可靠性较高。
Description
技术领域
本发明涉及软件测试领域,特别是涉及一种程序调试方法及系统。
背景技术
伴随着电子技术的发展,众多的CPU芯片被研发出来。一种CPU芯片的研制,从设计、验证、流片到量产的过程中往往需要一个比较长的周期。与此同时,针对该CPU芯片的程序也要同步进行开发。
在CPU芯片尚未研制出成品的情况下,通常需要依赖模拟器对CPU芯片进行功能和性能的模拟,此模拟器必须支持该CPU芯片的体系结构,即体系结构模拟器。体系结构模拟器使用高级语言将新的体系结构设计实现为一个虚拟系统,在已有的计算机上运行,对所研发CPU芯片的程序进行模拟,从而对此程序进行调试,并对程序的正确性和性能进行分析和评估。目前,国际上最为流行的体系结构模拟器是SimpleScalar,它是一个集成了ARM和Alpha21264体系结构的模拟器。我国中科院也在研发龙芯2号微处理器过程中研制了Sim-Godsun体系结构模拟器,能够支持龙芯指令集的模拟。
但是,因为体系结构层次上的计算机系统很复杂,如果通过体系结构模拟器来模拟诸多细节,处理速度会非常慢。另外,由于模拟器本身的复杂性,在运行过程中不可避免的会出现诸多问题,所以体系结构软件模拟器的可靠性也不高。
发明内容
为解决上述技术问题,本发明实施例提供一种程序调试方法及系统,以实现程序调试的快捷和高可靠性,技术方案如下:
一种程序调试方法,包括:
读入待调试的第一平台程序;
对所述第一平台程序进行反汇编,生成第一平台指令;
将所述第一平台指令逐条跨平台等价转换为第二平台指令,所述第二平台指令为:标准调试器能够识别的指令;
对所述第二平台指令进行编译,生成第二平台程序;
将所述第二平台程序输出到标准调试器进行调试。
优选的,所述将第一平台指令逐条跨平台等价转换为第二平台指令,包括:
逐条判断所述反汇编生成的第一平台指令与所述第二平台指令是否为指令集架构兼容指令,如果是,则执行一对一等价转换;否则,执行一对多等价转换;
其中,所述一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令;
所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令。
优选的,所述执行一对多等价转换,包括:
当预留的指令空间的空余空间大于一对多等价转换所需空间时,执行所述一对多等价转换。
优选的,在所述一对多等价转换过程中,还包括:
实时判断所述一对多等价转换所需的空间是否超过预留的指令空间,如果是,则报错并停止指令转换。
优选的,当所述一对多等价转换所需的空间超过预留的指令空间并引起报错和指令转换停止时,增大所述预留的指令空间的大小,继续执行将所述第一平台指令跨平台转换为第二平台指令的操作。
相应于本发明提供的一种程序调试方法,本发明还同时提供了一种程序调试系统:
一种程序调试系统,包括:标准调试器和程序调试装置,
所述程序调试装置包括:程序读入模块、反汇编模块、跨平台指令转换模块、编译模块,程序输出模块;
所述程序读入模块,用于读入待调试的第一平台程序;
所述反汇编模块,用于对所述第一平台程序进行反汇编,生成第一平台指令;
所述跨平台指令转换模块,用于将所述第一平台指令逐条跨平台等价转换为第二平台指令,所述第二平台指令为:标准调试器能够识别的指令;
所述编译模块,用于对所述第二平台指令进行编译,生成第二平台程序;
所述程序输出模块,用于将所述第二平台程序输出到标准调试器进行调试。
优选的,所述跨平台指令转换模块包括:指令集构架兼容指令判断子模块、一对一等价转换子模块和一对多等价转换子模块;
所述指令集构架兼容指令判断子模块,用于逐条判断反汇编生成的第一平台指令与第二平台指令是否为指令集架构兼容指令;
所述一对一等价转换子模块,用于对指令集构架兼容指令进行一对一等价转换,其中,所述一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令;
所述一对多等价转换子模块,用于对非指令集构架兼容指令进行一对多等价转换,其中,所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令,所述多个第二平台指令存储在预留的指令空间中。
优选的,当预留的指令空间的空余空间大于一对多等价转换所需空间时,执行所述一对多等价转换。
优选的,所述跨平台指令转换模块,还包括越界判断子模块和指令转换停止子模块;
所述越界判断子模块用于实时判断所述一对多等价转换所需的空间是否超过预留的指令空间;
所述指令转换停止子模块,用于在所述一对多等价转换所需的空间超过预留的指令空间时,进行报错并停止指令转换。
优选的,所述跨平台指令转换模块,还包括:空间调整模块,用于当所述一对多等价转换所需的空间超过预留的指令空间并引起报错和指令转换停止时,增大所述预留的指令空间的大小。
通过应用以上技术方案,本发明的方法及系统能够将针对尚未研制成功的CPU芯片的程序转换为针对已研制成功并可靠性高的CPU芯片体系结构上的程序,并使用标准的调试器进行调试,对程序的正确性和性能进行分析和评估,从而避免了使用体系结构模拟器进行模拟所带来的处理速度慢、可靠性低的缺点。由于使用了已有的硬件资源和标准的调试器,所以处理速度较快,并且可靠性较高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种程序调试方法的流程图;
图2为本发明实施例提供的另一种程序调试方法的流程图;
图3为本发明实施例提供的另一种程序调试方法的流程图;
图4为本发明实施例提供的一种程序调试系统的结构示意图;
图5为本发明实施例提供的跨平台指令转换模块的结构示意图;
图6为本发明实施例提供的另一跨平台指令转换模块的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
图1所示为本发明实施例提供的一种程序调试方法的流程图。
如图1所示,本发明实施例提供的一种程序调试方法包括:
S101、读入待调试的第一平台程序;
本领域技术人员可以理解的是,第一平台程序可以为a.out格式可执行文件。a.out格式文件为一种汇编和链接输出(Assembly & linker editor output)的目标格式文件,它由一个文件头和随后的代码部分(Text section,也称文本段)、已初始化数据部分、重定位信息部分等组成。
其中,所述第一平台程序为尚未研制成功的CPU芯片的程序。
S102、对所述第一平台程序进行反汇编,生成第一平台指令;
其中,对所述第一平台程序进行反汇编可以为对a.out格式文件的文本段进行反汇编。
反汇编即将可执行文件反编译还原成汇编语言或其他高级语言,执行效果相同。
S103、将第一平台指令逐条跨平台等价转换为第二平台指令,所述第二平台指令为:标准调试器能够识别的指令;
本领域技术人员可以理解的是,等价转换即为执行效果相同的转换。
当然,为解决跨平台等价转换可能带来的转换后的指令比转换前的指令需要更多指令空间的问题,可以在执行步骤S101之前为第一平台指令等价转换为第二平台指令预留一定数量的指令空间。
本领域技术人员可以理解的是,预留指令空间的大小可以根据实际经验设定,例如,预留1M的指令空间能基本满足大部分指令转换的需要,那就可以预留1M的指令空间。需要说明的是,为了满足更多的指令转换的需要可以适当增大预留指令空间的大小,但是如果预留指令空间过大,而大量空间被占用的机会又很少,这样会造成系统资源利用率的降低。
为了能更合理、高效的利用空间资源,本发明实施例还可以增加对预留空间是否满足指令转换需要的步骤,当不能满足指令转换需要时,增大预留空间,然后继续执行将所述将第一平台指令跨平台转换为第二平台指令的操作。
将所述第一平台指令跨平台等价转换为第二平台指令可以具体为:
逐条判断所述反汇编生成的第一平台指令与所述第二平台指令是否为指令集架构(ISA,Instruction Set Architecture)兼容指令,如果是,则执行一对一等价转换;否则,执行一对多等价转换。
其中,所述一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令;
所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令。为了方便理解,现举例说明:
本领域技术人员可以理解的是,符号/**/中的内容为各指令的中文释义。假设第一平台程序反编译为以下5条指令:
1.laddr r1,32,r2/*取地址指令,以寄存器r1内容为基地址,加上32字节的值存放到寄存器r2中*/
2.addl r2,r3,r4/*普通加法,r2+r3的结果存入r4*/
3.ldmem r1,0,r4/*访存指令,取以r1寄存器内容为基地址,偏移为0字节的内存内容存放到寄存器r4中*/
4.vadd4r4,r5,r6/*宽度为4个整数类型的向量加法,向量寄存器r4和r5相加,结果存放到r6*/
5.stmem r6,24,r2/*宽度为4个整数类型的向量存储,将向量寄存器r6的内容存放到以r2为基地址,偏移为24字节的内存中*/
其中,第1、2、3条为ISA兼容指令,第4、5条为非ISA兼容指令,则将这5条指令跨平台等价转换为以下的指令序列:
1.ldi r1,32,r2/*取地址指令,以寄存器r1内容为基地址,加上32字节的值存放到寄存器r2中*/
2.addw r2,r3,r4/*普通加法,r2+r3的结果存入r4*/
3.ldw r1,0,r4/*访存指令,取以r1寄存器内容为基地址,偏移为0字节的内存内容存放到寄存器r4中*/
4.br offset4/*br是一条跳转指令,该指令将控制流跳转到指令预留缓冲区的offset4位置*/
5.br offset5/*br是一条跳转指令,该指令将控制流跳转到指令预留缓冲区的offset5位置*/
...
offset 4:
4.1.addwl2r4,r5,r6/*宽度为2个整数类型的短向量加法*/
4.2.addwh2r4,r5,r6/*宽度为2个整数类型的短向量加法*/
4.3.mergec r6,r6,r6/*向量寄存器内数据整理*/
4.4.return 5/*返回指令,控制流返回到正文段5的位置*/
offset 5:
5.1.stwh2r6,24,r2/*宽度为2个整数类型的存储指令*/
5.2.stwl2r6,20,r2/*宽度为2个整数类型的存储指令*/
5.3return 6/*返回指令,控制流返回到正文段6的位置*/
其中第1、2、3条指令进行了一对一等价转换,而第4、5条指令则分别跳转到预留指令空间中offset4和offset5的位置,并分别转换成了4.1、4.2、4.3、4.4四条指令和5.1、5.2、5.3三条指令。
需要说明的是,以上举例仅为方便理解,不对本发明做任何限定。
其中,标准调试器可以为标准的GDB调试器。GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,被广泛使用。与VC、BCB等图形界面调试工具不同的是,GDB是一种命令行调试工具。命令行可以形成执行序列,形成脚本。命令行软件的优点是可以使命令行集成在一起,使用简单的已有的工具命令,形成一个强大的功能。当然,也以采用其他形式的的标准调试器,本发明实施例对此并不进行限定。
S104、对所述第二平台指令进行编译,生成第二平台程序;其中,生成的第二平台程序可以写入新的第二平台格式的可执行文件,第二平台程序为已研制成功并可靠性高的CPU芯片体系结构上的程序。
S105、将所述第二平台程序输出到标准调试器进行调试。
通过应用以上技术方案,本发明的方法能够将针对尚未研制成功的CPU芯片的程序转换为针对已研制成功并可靠性高的CPU芯片体系结构上的程序,并使用标准的调试器进行调试,对程序的正确性和性能进行分析和评估。从而避免了使用体系结构模拟器进行模拟所带来的处理速度慢、可靠性低的缺点。由于使用了已有的硬件资源和标准的调试器,所以处理速度较快,并且可靠性较高。
图2所示为本发明实施例提供的另一种程序调试方法的流程图。
如图2所示,本实施例提供的方法包括:
S201、读入待调试的第一平台程序;
本领域技术人员可以理解的是,第一平台程序可以为a.out格式可执行文件。a.out格式文件为一种汇编和链接输出(Assembly & linker editor output)的目标格式文件,它由一个文件头和随后的代码部分(Text section,也称文本段)、已初始化数据部分、重定位信息部分等组成。
其中,所述第一平台程序为尚未研制成功的CPU芯片的程序。
S202、对第一平台程序进行反汇编,生成第二平台指令;
其中,对所述第一平台程序进行反汇编可以为对a.out格式文件的文本段进行反汇编。
反汇编即将可执行文件反编译还原成汇编语言或其他高级语言,执行效果相同。
S203、为第一平台指令等价转换为第二平台指令预留一定数量的指令空间;
本领域技术人员可以理解的是,预留指令空间的大小可以根据实际经验设定,例如,预留1M的指令空间能基本满足大部分指令转换的需要,那就可以预留1M的指令空间。需要说明的是,为了满足更多的指令转换的需要可以适当增大预留指令空间的大小,但是如果预留指令空间过大,而大量空间被占用的机会又很少,这样会造成系统资源利用率的降低。
S204、逐条判断反汇编生成的第一平台指令与第二平台指令是否为ISA兼容指令,如果是,则执行步骤S205,否则执行步骤S206;
S205、进行一对一等价转换,执行步骤S208;
其中,一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令,转换过程占用的空间相同。
S206、进行一对多等价转换;
其中,所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令,所述多个第二平台指令存储在预留的指令空间中。因为转换后的第二平台指令多于第一平台指令,因而需要更多的指令空间。
S207、实时判断所述一对多等价转换所需的空间是否超过预留的指令空间的空余空间,如果是,则执行步骤S211,否则,执行步骤S208;
在实际应用中,预留指令空间可以设置成一个能满足大部分程序调试的大小,但为了节省指令空间,不宜设置的过大。所以可以进行所转换指令所需空间是否超过预留的指令空间的判断。
需要说明的是,在指令空间资源充足或者不需要考虑节省指令空间问题的时候,也可以将指令空间设置为一个较大的数值,这种情况下,可以不需要执行所述一对多等价转换所需的空间是否超过预留的指令空间空余空间的判断。
S208、判断第一平台指令是否全部转换完毕,如果是,则执行步骤S209,否则,执行步骤S204;
S209、将第二平台指令进行编译,生成第二平台程序;
S210、将所述第二平台程序输出到标准调试器进行调试;
S211、报错并停止指令转换。
在实际应用中,报错可以为显示“空间不足!”内容的报警。
需要说明的是,当所述一对多等价转换所需的空间超过预留的指令空间并引起报错和指令转换停止时,可以增大所述预留的指令空间的大小,使空余空间变大,继续执行将所述将第一平台指令跨平台转换为第二平台指令的操作,以确保跨平台转换的完成。
图3所示为本发明实施例提供的另一种程序调试方法的流程图,包括以下步骤:
S301、读入待调试的第一平台程序;
S302、对第一平台程序进行反汇编,生成第二平台指令;
S303、为第一平台指令预留一定数量的指令空间;
S304、逐条判断反汇编生成的第一平台指令与第二平台指令是否为ISA兼容指令,如果是,则执行步骤S305,否则执行步骤S306;
S305、进行一对一等价转换,执行步骤S308;
其中,一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令,转换过程占用的空间相同。
S306、进行一对多等价转换;
S307、实时判断所述一对多等价转换所需的空间是否超过预留的指令空间,如果是,则执行步骤S311,否则,执行步骤S308;
S308、判断第一平台指令是否全部转换完毕,如果是,则执行步骤S309,否则,执行步骤S304;
S309、将第二平台指令进行编译,生成第二平台程序;
S310、将所述第二平台程序输出到标准调试器进行调试;
S311、报错并停止指令转换;
S312、增大所述预留的指令空间的大小,执行步骤S306。
由于预留空间过大会导致系统资源利用率的降低,所以本方法只需为第一平台指令等价转换为第二平台指令预留适量的、能满足大部分指令转换需要的指令空间。对于少数情况下,预留的指令空间不能满足指令转换需要,本方法中的S312步骤可以对预留空间大小进行修改,增大预留指令空间的大小,进而满足指令转换的需要。
本领域技术人员可以理解的是,本方法能够更高效的利用空间资源。
相应于上面的方法实施例,本发明还提供一种程序调试系统。
图4所示为本发明实施例提供的一种程序调试系统的结构示意图。如图4所示,本实施例提供程序调试系统包括:
程序调试装置100和标准调试器200,
所述程序调试装置100包括:程序读入模块110、反汇编模块120、跨平台指令转换模块130、编译模块140,程序输出模块150;
所述程序读入模块110,用于读入待调试的第一平台程序;
其中,所述第一平台程序为尚未研制成功的CPU芯片的程序。
所述反汇编模块120,用于对所述第一平台程序进行反汇编,生成第一平台指令;
反汇编即将可执行文件反编译还原成汇编语言或其他高级语言,执行效果相同。
所述跨平台指令转换模块130,用于将所述第一平台指令逐条跨平台等价转换为第二平台指令,所述第二平台指令为:标准调试器200能够识别的指令;
本领域技术人员可以理解的是,等价转换即为执行效果相同的转换。
当然,为解决跨平台等价转换可能带来的转换后的指令比转换前的指令需要更多指令空间的问题,可以为第一平台指令等价转换为第二平台指令预留一定数量的指令空间。
将所述第一平台指令跨平台等价转换为第二平台指令可以具体为:
逐条判断所述反汇编生成的第一平台指令与所述第二平台指令是否为ISA兼容指令,如果是,则执行一对一等价转换;否则,执行一对多等价转换。
其中,所述一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令;
所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令,所述多个第二平台指令存储在预留的指令空间中。
其中,标准调试器200可以为标准的GDB调试器。当然,也以采用其他形式的的标准调试器,本发明实施例对此并不进行限定。
所述编译模块140,用于对所述第二平台指令进行编译,生成第二平台程序;
其中,生成的第二平台程序可以写入新的第二平台格式的可执行文件,第二平台程序为已研制成功并可靠性高的CPU芯片体系结构上的程序。
所述程序输出模块150,用于将所述第二平台程序输出到标准调试器200进行调试。
通过应用以上技术方案,本发明的系统能够将针对尚未研制成功的CPU芯片的程序转换为针对已研制成功并可靠性高的CPU芯片体系结构上的程序,并使用标准的调试器进行调试,对程序的正确性和性能进行分析和评估。从而避免了使用体系结构模拟器进行模拟所带来的处理速度慢、可靠性低的缺点。由于使用了已有的硬件资源和标准的调试器,所以处理速度较快,并且可靠性较高。
图5为本发明实施例提供的跨平台指令转换模块的结构示意图。
如图5所示,所述跨平台指令转换模块130包括:ISA兼容指令判断子模块131、一对一等价转换子模块132、越界判断子模块133、一对多等价转换子模块134、转换完毕判断子模块135和指令转换停止子模块136;
ISA兼容指令判断子模块131,用于判断反汇编生成的第一平台指令与第二平台指令是否为ISA兼容指令;
一对一等价转换子模块132,用于对ISA兼容指令进行一对一等价转换,其中,所述一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令;
越界判断子模块133,用于实时判断所述一对多等价转换所需的空间是否超过预留的指令空间,如果超过,则发送一信号到所述指令转换停止子模块136,否则发送一信号到一对多等价转换子模块134;
一对多等价转换子模块134,用于对非ISA兼容指令进行一对多等价转换,其中,所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令;
转换完毕判断模块135,用于判断第一平台指令是否已全部转换为第二平台指令,如果已转换完毕,则发送一信号到编译模块140,由编译模块140对第二平台指令进行编译,生成第二平台程序,否则发送一信号到ISA兼容指令判断子模块131,由ISA兼容指令判断子模块131继续对其他第一平台指令进行ISA兼容判断;
指令转换停止子模块136,用于在接收到越界判断子模块133发送的信号后,进行报错并停止指令转换。
图6为本发明实施例提供的另一跨平台指令转换模块的结构示意图。
图6所示的跨平台指令转换模块与图5所示的跨平台指令转换模块的区别在于:跨平台指令转换模块130还包括:空间调整模块137,用于当一对多等价转换所需的空间超过预留的指令空间并引起报错和指令转换停止时,增大预留的指令空间的大小,然后输出一信号到ISA兼容指令判断子模块131,由ISA兼容指令判断子模块131继续对其他第一平台指令进行ISA兼容判断。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种程序调试方法,其特征在于,包括:
读入待调试的第一平台程序;
对所述第一平台程序进行反汇编,生成第一平台指令;
将所述第一平台指令逐条跨平台等价转换为第二平台指令,所述第二平台指令为:标准调试器能够识别的指令;
对所述第二平台指令进行编译,生成第二平台程序;
将所述第二平台程序输出到标准调试器进行调试。
2.根据权利要求1所述的方法,其特征在于,所述将第一平台指令逐条跨平台等价转换为第二平台指令,包括:
逐条判断所述反汇编生成的第一平台指令与所述第二平台指令是否为指令集架构兼容指令,如果是,则执行一对一等价转换;否则,执行一对多等价转换;
其中,所述一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令;
所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令。
3.根据权利要求2所述的方法,其特征在于,所述执行一对多等价转换,包括:
当预留的指令空间的空余空间大于一对多等价转换所需空间时,执行所述一对多等价转换。
4.根据权利要求3所述的方法,其特征在于,在所述一对多等价转换过程中,还包括:
实时判断所述一对多等价转换所需的空间是否超过预留的指令空间,如果是,则报错并停止指令转换。
5.根据权利要求4所述的方法,其特征在于,当所述一对多等价转换所需的空间超过预留的指令空间并引起报错和指令转换停止时,增大所述预留的指令空间的大小,继续执行将所述第一平台指令跨平台转换为第二平台指令的操作。
6.一种程序调试系统,其特征在于,包括:标准调试器和程序调试装置,
所述程序调试装置包括:程序读入模块、反汇编模块、跨平台指令转换模块、编译模块,程序输出模块;
所述程序读入模块,用于读入待调试的第一平台程序;
所述反汇编模块,用于对所述第一平台程序进行反汇编,生成第一平台指令;
所述跨平台指令转换模块,用于将所述第一平台指令逐条跨平台等价转换为第二平台指令,所述第二平台指令为:标准调试器能够识别的指令;
所述编译模块,用于对所述第二平台指令进行编译,生成第二平台程序;
所述程序输出模块,用于将所述第二平台程序输出到标准调试器进行调试。
7.根据权利要求6所述的系统,其特征在于,所述跨平台指令转换模块包括:指令集构架兼容指令判断子模块、一对一等价转换子模块和一对多等价转换子模块;
所述指令集构架兼容指令判断子模块,用于逐条判断反汇编生成的第一平台指令与第二平台指令是否为指令集架构兼容指令;
所述一对一等价转换子模块,用于对指令集构架兼容指令进行一对一等价转换,其中,所述一对一等价转换为:将一个第一平台指令等价转换为一个第二平台指令;
所述一对多等价转换子模块,用于对非指令集构架兼容指令进行一对多等价转换,其中,所述一对多等价转换为:将一个第一平台指令等价转换为多个第二平台指令,所述多个第二平台指令存储在预留的指令空间中。
8.根据权利要求7所述的系统,其特征在于,当预留的指令空间的空余空间大于一对多等价转换所需空间时,执行所述一对多等价转换。
9.根据权利要求8所述的系统,其特征在于,所述跨平台指令转换模块,还包括越界判断子模块和指令转换停止子模块;
所述越界判断子模块用于实时判断所述一对多等价转换所需的空间是否超过预留的指令空间;
所述指令转换停止子模块,用于在所述一对多等价转换所需的空间超过预留的指令空间时,进行报错并停止指令转换。
10.根据权利要求9所述的系统,其特征在于,所述跨平台指令转换模块,还包括:空间调整模块,用于当所述一对多等价转换所需的空间超过预留的指令空间并引起报错和指令转换停止时,增大所述预留的指令空间的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010594006.8A CN102541727B (zh) | 2010-12-17 | 2010-12-17 | 一种程序调试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010594006.8A CN102541727B (zh) | 2010-12-17 | 2010-12-17 | 一种程序调试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541727A true CN102541727A (zh) | 2012-07-04 |
CN102541727B CN102541727B (zh) | 2015-07-08 |
Family
ID=46348669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010594006.8A Active CN102541727B (zh) | 2010-12-17 | 2010-12-17 | 一种程序调试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541727B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473173A (zh) * | 2013-09-10 | 2013-12-25 | 成都品果科技有限公司 | 一种对iOS系统进行汇编级动态调试的方法及装置 |
CN103927213A (zh) * | 2014-04-18 | 2014-07-16 | 广州金山网络科技有限公司 | 一种文件编译方法及编译装置 |
CN109992516A (zh) * | 2019-04-03 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 一种编程调试方法、装置及相关产品 |
CN110750359A (zh) * | 2019-10-17 | 2020-02-04 | 中科寒武纪科技股份有限公司 | 硬件资源配置方法、装置、云侧设备和存储介质 |
CN112199270A (zh) * | 2019-07-08 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 一种程序测试方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279150B1 (en) * | 1997-09-01 | 2001-08-21 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Method for converting an object code into a program code |
CN101078994A (zh) * | 2006-05-26 | 2007-11-28 | 松下电器产业株式会社 | 编译器装置、编译器方法和编译器程序 |
US20080307403A1 (en) * | 2007-03-27 | 2008-12-11 | Matsushita Electric Industrial Co., Ltd. | Compiling apparatus |
-
2010
- 2010-12-17 CN CN201010594006.8A patent/CN102541727B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279150B1 (en) * | 1997-09-01 | 2001-08-21 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Method for converting an object code into a program code |
CN101078994A (zh) * | 2006-05-26 | 2007-11-28 | 松下电器产业株式会社 | 编译器装置、编译器方法和编译器程序 |
US20080307403A1 (en) * | 2007-03-27 | 2008-12-11 | Matsushita Electric Industrial Co., Ltd. | Compiling apparatus |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473173A (zh) * | 2013-09-10 | 2013-12-25 | 成都品果科技有限公司 | 一种对iOS系统进行汇编级动态调试的方法及装置 |
CN103473173B (zh) * | 2013-09-10 | 2016-03-09 | 成都品果科技有限公司 | 一种对iOS系统进行汇编级动态调试的方法及装置 |
CN103927213A (zh) * | 2014-04-18 | 2014-07-16 | 广州金山网络科技有限公司 | 一种文件编译方法及编译装置 |
CN103927213B (zh) * | 2014-04-18 | 2017-08-25 | 广州猎豹网络科技有限公司 | 一种文件编译方法及编译装置 |
CN109992516A (zh) * | 2019-04-03 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 一种编程调试方法、装置及相关产品 |
CN109992516B (zh) * | 2019-04-03 | 2022-08-26 | 寒武纪(西安)集成电路有限公司 | 一种编程调试方法、装置及相关产品 |
CN112199270A (zh) * | 2019-07-08 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 一种程序测试方法、装置、设备及介质 |
CN112199270B (zh) * | 2019-07-08 | 2024-02-27 | 腾讯科技(深圳)有限公司 | 一种程序测试方法、装置、设备及介质 |
CN110750359A (zh) * | 2019-10-17 | 2020-02-04 | 中科寒武纪科技股份有限公司 | 硬件资源配置方法、装置、云侧设备和存储介质 |
CN110750359B (zh) * | 2019-10-17 | 2022-07-15 | 中科寒武纪科技股份有限公司 | 硬件资源配置方法、装置、云侧设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102541727B (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101667154A (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
US20140075249A1 (en) | Execution History Tracing Method | |
CN101344899B (zh) | 一种片上系统的仿真测试方法及仿真测试系统 | |
WO1996002039A1 (en) | Hardware design verification system and method | |
CN102541727B (zh) | 一种程序调试方法及系统 | |
CN104750603A (zh) | 一种多核dsp软件仿真器及其物理层软件测试方法 | |
CN101971143A (zh) | 应用组件之间的自动连接 | |
CN101231589A (zh) | 用于原位开发嵌入式软件的系统和方法 | |
CN101458633B (zh) | 通过脚本程序访问宿主程序的方法及其系统和装置 | |
Iyenghar et al. | A model based approach for debugging embedded systems in real-time | |
US7478027B2 (en) | Systems, methods, and media for simulation of integrated hardware and software designs | |
CN102722438A (zh) | 一种内核调试的方法和设备 | |
CN102331961A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN101000555B (zh) | 手持终端系统 | |
Gioachin et al. | Robust non-intrusive record-replay with processor extraction | |
CN100517265C (zh) | 一种微控制器仿真系统 | |
CN101281507A (zh) | Usb接口型dsp实时仿真开发系统 | |
CN101000557A (zh) | 虚拟机 | |
CN1648873A (zh) | 断点调试功能的实现方法 | |
EP1367489A1 (en) | A microprocessor development system | |
CN111338761A (zh) | 一种51单片机虚拟中断控制器及实现方法 | |
CN102567070A (zh) | 手机软件调试方法及其模拟器 | |
CN112559336A (zh) | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 | |
Posadas et al. | Chapter SW Annotation Techniques and RTOS Modelling for Native Simulation of Heterogeneous Embedded Systems | |
Yeh et al. | Optimizing the simulation speed of qemu and systemc-based virtual platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |