一种嵌入式系统的调试方法及其装置制造方法

文档序号:6551017阅读:170来源:国知局
一种嵌入式系统的调试方法及其装置制造方法【专利摘要】本发明提供一种嵌入式系统的调试方法,应用于调试器主机,包括:接收用户输入的调试命令,根据所述调试命令在主程序中设定断点并编写断点服务程序;对所述断点数据和断点服务程序进行单独编译产生目标文件;将所述目标文件复制到所述需要进行调试的目标板上;接收并解析所述进行调试的目标板产生的输出文件。本发明还提供一种嵌入式系统的调试方法,应用于需要进行调试的目标板,包括:复制调试器主机产生的目标文件,并调用所述目标文件所包含的函数和数据进行重新定位;完成对需要进行调试的目标板的断点设定;进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件;复制所述输出文件到调试器主机。【专利说明】-种嵌入式系统的调试方法及其装置【
技术领域
】[0001]本发明涉及调试【
技术领域
】,尤其涉及一种嵌入式系统的调试方法及其装置。【
背景技术
】[0002]现在,嵌入式电子产品的发展日新月异,系统的复杂程度越来越深,产品更新的速度越来越快,竞争越来越激烈、残酷。随着USB的应用,网络的普及,嵌入式电子产品的到越来越多的发展,比如手机从通讯向智能化的发展,电视从单纯的接收电视节目到可以上网、互动。这一切都对软件开发有了更高的要求,而调试方法是嵌入式系统开发的重要环节,会决定一个产品的开发、推广的速度。【
发明内容】[0003]有鉴于此,本发明提供一种嵌入式系统的调试方法及其装置,其反应速度快,且无需改变目标板上的主程序,可扩展性强。[0004]本发明提供一种嵌入式系统的调试方法,应用于调试器主机,包括:[0005]接收用户输入的调试命令,根据所述调试命令在主程序中设定断点并编写断点服务程序;[0006]对所述断点数据和断点服务程序进行单独编译产生目标文件;[0007]将所述目标文件复制到所述需要进行调试的目标板上;[0008]接收并解析所述进行调试的目标板产生的输出文件。[0009]本发明还提供一种嵌入式系统的调试方法,应用于需要进行调试的目标板,包括:[0010]复制调试器主机产生的目标文件,并调用所述目标文件所包含的函数和数据进行重新定位;[0011]完成对需要进行调试的目标板的断点设定;[0012]进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件;[0013]复制所述输出文件到调试器主机。[0014]本发明还提供一种嵌入式系统的调试装置,应用于调试器主机,包括:[0015]断点执行模块,用于接收用户输入的调试命令,根据所述调试命令在主程序中设定断点并编写断点服务程序;[0016]文件产生模块,用于对所述断点数据和断点服务程序进行单独编译产生目标文件;[0017]文件复制模块,用于将所述目标文件复制到所述需要进行调试的目标板上;[0018]文件接收模块,用于接收并解析所述进行调试的目标板产生的输出文件。[0019]本发明还提供一种嵌入式系统的调试装置,应用于需要进行调试的目标板,包括:[0020]文件载入模块,用于复制调试器主机产生的目标文件,并调用所述目标文件所包含的函数和数据进行重新定位;[0021]断点设定模块,用于完成对需要进行调试的目标板的断点设定;[0022]文件保存模块,用于进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件;[0023]文件发送模块,用于复制所述输出文件到调试器主机。[0024]由以上技术方案可见,本发明在调试器主机上根据所述调试命令在主程序中设定断点并编写断点服务程序,以及对所述断点数据和断点服务程序进行单独编译产生目标文件。调试器主机将所述目标文件复制到所述需要进行调试的目标板上,并调用所述目标文件所包含的函数和数据进行重新定位,完成目标板的断点设定。目标板进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件由调试器主机进行解析。本发明无需修改目标板上的主程序,且断点响应是在发生异常后即可触发,实时性更强。【专利附图】【附图说明】[0025]图1是本发明一种实施方式中嵌入式系统的调试方法流程图;[0026]图2是本发明另一种实施方式中嵌入式系统的调试方法流程图;[0027]图3是本发明Elf格式的示意图;[0028]图4是本发明调试器主机和目标板程序运行操作图;[0029]图5是本发明一种实施方式中嵌入式系统的调试装置示意图;[0030]图6是本发明另一种实施方式中嵌入式系统的调试装置示意图。【具体实施方式】[0031]嵌入式软件调试的方法有很多,从简单的如串口打印,到复杂的软件仿真器;从纯软件调试方法(如gdb),到需要硬件支持的片上调试(如trace);从近端调试到通过以太网的远端调试。目前已有的调试方法都需要调试主机与目标板相连接,比如,串口、JTAG口、以太网等。通过这些连接,再配合主机上的软件来获得各种信息。[0032]传统的调试方式有两个局限性,一是必须在线调试。因为只有主机调试器与被调试目标板相连接并且通讯正常时,才能进行调试,导致被调试系统在启动之后,要一直与主机调试器相连接,这显然与大部分嵌入式产品的正常工作环境需求不符合。尤其不利于产品在推广、地区测试阶段。例如手机,不能一直接着主机来使用。那一旦出现问题,调试就比较烦琐。二是调试反应周期较长。目前的调试过程基本可以概括为如下的过程:设定断点_>系统运行_>运行到断点程序挂起_>通知主机调试器_>程序员查看程序状态_>继续运行。其中,从目标板程序运行到断点使程序挂起,到程序员查看程序状态并发出各种调试命令,这之间,除了程序员的操作延时之外,还包括了主机与目标板之间多次通讯的延时。这些通讯延迟包括通讯协议本身的延时(例如串口通讯受波特率的限制),还包括打包数据,校验数据所增加的包头、包尾等冗余数据所占据的时间。对于嵌入式系统大部分的调试需求是要对外部信号做处理,这样的延迟会无法追踪到外部的信号而无从调试。[0033]本发明在调试器主机上根据所述调试命令在主程序中设定断点并编写断点服务程序,以及对所述断点数据和断点服务程序进行单独编译产生目标文件。调试器主机将所述目标文件复制到所述需要进行调试的目标板上,并调用所述目标文件所包含的函数和数据进行重新定位,完成目标板的断点设定。目标板进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件由调试器主机进行解析。本发明无需修改目标板上的主程序,且断点响应是在发生异常后即可触发,实时性更强。[0034]参看图1,本发明提供一种嵌入式系统的调试方法,应用于调试器主机,包括:[0035]S1、接收用户输入的调试命令,根据所述调试命令在主程序中设定断点并编写断点服务程序。[0036]S2、对所述断点数据和断点服务程序进行单独编译产生目标文件。[0037]S3、将所述目标文件复制到所述需要进行调试的目标板上。[0038]S4、接收并解析所述进行调试的目标板产生的输出文件。[0039]参见图2,本发明还提供一种嵌入式系统的调试方法,应用于需要进行调试的目标板,包括:[0040]P1、复制调试器主机产生的目标文件,并调用所述目标文件所包含的函数和数据进行重新定位;[0041]P2、完成对需要进行调试的目标板的断点设定;[0042]P3、进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件;[0043]P4、复制所述输出文件到调试器主机。[0044]由上述可知,本发明调试方法由调试器主机产生目标文件,并将目标文件复制到目标板后进行重定位,完成断点设定,目标板可以调用所述目标文件所包含的函数和数据进行重新定位,完成目标板的断点设定。目标板进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件由调试器主机进行解析。本发明无需修改目标板上的主程序,且断点响应是在发生异常后即可触发,实时性更强。[0045]进一步,本发明所述目标文件为Elf格式中的适于连接的可重定位文件或者Elf格式中的共享目标文件。[0046]目标文件(OBJ文件)为程序编译时生成的中间代码文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成可执行文件了。[0047]Elf格式(ExecutableandLinkableFormat,可执行连接格式),是UNIX系统实验室(USL)作为应用程序二进制接口(ApplicationBinaryInterface,ABI)而开发和发布的,也是Linux的主要可执行文件格式。[0048]Elf格式是x86Linux系统下的一种常用目标文件(objectfile)格式,有三种主要类型文件:[0049](1)适于连接的可重定位文件(relocatablefile),可与其它目标文件一起创建可执行文件和共享目标文件。[0050](2)适于执行的可执行文件(executablefile),用于提供程序的进程映像,加载的内存执行。[0051](3)共享目标文件(sharedobjectfile),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。[0052]参看图3,elf格式主要包括,文件头(elf_header)、各个数据段(section)、段描述头(sectionheader)。ELF文件头在文件的开始,保存了路线图(roadmap),描述了该文件的组织情况,文件头包含了对应段的位置、类型等与段相关的信息。数据段保存着目标文件的信息,从连接角度看:包括指令,数据,符号表,重定位信息等等。数据段分为shstrtab,strtab,symtab,text,reltext等,分别包含各个段的段名字符,偏移位置、常量字符串、函数变量等符号标签、代码段、重定位信息段等。[0053]进一步,本发明所述目标文件通过离线方式复制到所述需要进行调试的目标板上。[0054]在具体实现中,本发明可以根据产品的不同而对离线方式做方便的选择,比如,手机,就可以使用sd卡、网络、usb接口等。电视,就可以使用U盘。本发明目标文件只需要从调试器主机上通过媒介复制到目标板上即可。[0055]进一步,本发明所述断点为软件断点、硬件断点和观察点中至少一种。本实施例选择使用软件断点,是因为其数量上不受限制,可以根据需要和所使用目标板类型的限制进行选择,并非固定。[0056]进一步,本发明所述断点服务程序包括对所述源程序中函数、全局变量和局部变量的调用。[0057]进一步,本发明所述函数、全局变量的调用通过导出的符号表进行;[0058]如所述局部变量存在于堆栈中,所述编译时产生与所述局部变量对应的地址信息;否则,所述编译时需要重新设定与所述局部变量对应的设定条件。[0059]进一步,本发明所述步骤S2包括:[0060]S21、解析断点数据并产生断点数据表;[0061]S22、确认断点实现函数,所述断点实现函数令主程序运行到断点位置时,产生未定义指令异常,进入中断;[0062]S23、对所述断点数据表、断点实现函数以及断点服务程序进行编译,产生目标文件。[0063]在本发明一示例性实施例中,往往需要多个软件断点,也会有机会使用到观察点来检测当某个变量被修改时的状况。这样,在S21中解析出来的数据,就要以一种约定好的格式,产生一个列表,即断点数据表。断点数据表描述了有几个断点,断点类型以及断点对应的地址。断点实现函数是指完成中断设定的实际操作,不同的CPU,不同类型的断点,实现的方式会有差异。以在ARM中实现软件断点为例,通常的实现方式是知晓断点设定的地址后,以一条未定义指令替换需要设定断点的位置。这样,当程序运行到断点位置时,就会产生未定义指令异常,进入中断。而取消软件断点,则是将之前替换掉的地址进行恢复。而对于观察点,则需要将观测变量的地址设定在相关的寄存器中。综上所述,各种断点的实现方式均需要对应的断点实现函数,为了使这部分函数可以重定位,编译时需要增加-G0选项,从而不产生gp寻址的指令以避免和主程序gp寻址冲突。[0064]进一步,本发明所述方法还包括:设定工具链。[0065]具体地,本发明因为嵌入式系统是运行在目标板上(而非PC端)所以在调试器主机端设定工具链。[0066]所述解析断点数据为利用所述工具链解析断点数据。[0067]在本实施例中,当断点在主程序中设定后,它显示的是c程序的某一行。如断点为软件断点,是需要知道此行程序所对应的机器码的地址。本发明利用所设定的工具链中相关的功能,将c程序的某一行,换算成机器码的地址。对于断点为观察点时,进行变量检测,实际上也是检测对应的地址,也需要利用所设定的工具链中相关的功能获得对应的地址。[0068]所述对断点数据表、断点实现函数以及断点服务程序进行编译为利用所述工具链对断点数据表、断点实现函数以及断点服务程序进行编译。[0069]所述解析进行调试的目标板产生的信息文件为利用所述工具链解析进行调试的目标板产生的信息文件。[0070]具体地,调试数据为一大堆数据,这些数据程序员是无法直接识别的。以堆栈数据为例,它的格式,是一堆以四个字节为一个单元的数据,每四个字节,代表一个地址,一个地址,就对应程序中一个函数的起始地址。使用设定的工具链,对应源代码编译产生的Elf格式目标文件,根据堆栈数据的排列逻辑,调试器主机就能显示出运行到断点之前的程序调用关系。[0071]进一步,本发明所述步骤P1包括:[0072]P11、将所述调试器主机产生的目标文件打开,从文件头开始依次读入和解析文件各个部分,并把所述目标文件中的运行段(如.text,.data,.bss)载入内存。[0073]P12、根据对所述运行段分配的内存地址以及重定位辅助段(如,symtab,shstrtab,strtab,.reltex等)所提供的信息重定位运行段中所需要重定位的部分,令所述需要进行调试的目标板的主程序获得重定位的所述目标程序地址即可运行所述目标程序。[0074]具体地,本发明目标文件存放位置有几种,一种是存储在媒体卡上,根据文件系统通过约定特定的文件名称或者约定特定的命令进行装载到目标板。另外也可以利用TFTP的方式,若目标板支持ftp,则可以使用此方法进行远程加载。[0075]进一步,本发明所述主程序在编译时产生符号名称与地址对应的外部符号表供所述目标文件使用。[0076]具体地,目标文件如需要使用主程序代码中的函数或者变量,需要先建立符号表,既符号名称与地址一一对应的外部符号表,主程序在链接的时候会把外部符号表放在特殊段,并且导出首地址。重定位过程中对于不在内部symtab中的符号会查找所述外部符号表进行定位。[0077]因为被独立目标文件中的函数所依赖的函数,需要在主程序编译时产生对应的外部符号表,因此在实际的应用中,会建议独立目标文件函数尽量少的依赖主程序,也就是尽量少调用主程序中的函数或者变量。[0078]进一步,本发明所述步骤P2包括:[0079]P21、调用目标文件中的断点实现函数,所述断点实现函数令所述主程序运行到断点位置时,产生未定义指令异常,进入中断。[0080]P22、解析断点数据表,完成对需要进行调试的目标板的断点设定。[0081]为了更进一步说明本发明实现,结合调试器主机和目标板来进行阐述。[0082]参见图4,虚线左边的步骤,均是在调试器主机上的操作,虚线右边的步骤,则是在目标板上的操作。[0083]401:在调试器主机上,设定源程序的文件夹。所述文件夹是让调试器主机方便显示源程序给程序员看,程序员后续的编辑代码,设定断点,均可在源程序上进行。[0084]402:在调试器主机上,设定工具链。[0085]403:对照源程序,设定断点。在本实施例中断点为软件断点。[0086]404:编写断点服务程序。此程序的内容,是当运行到断点后,希望进行的操作。例如,读取CPU的寄存器,获得PC指针的值,获得某个进程的堆栈数据等。此部分程序允许对主程序内容进行调用,包括,函数、全局变量、局部变量(通常用在条件断点的情况下使用)。对于函数和全局变量的调用,可以通过导出的符号表进行调用。对于局部变量,通常是指断点所在函数的局部变量,这时,分为两种情况,第一种,局部变量存在于堆栈中,在编译目标文件时,可以产生对应的地址信息。第二种,局部变量在主程序编译的过程中就被优化掉了,这时,在编译目标文件时,需要提示条件变量不存在,需要重新设定条件。[0087]405:编译产生目标文件。包括:[0088]4051:利用工具链解析断点数据。[0089]4052:产生断点数据表。解析出来的断点数据,产生断点数据表,其描述了断点数量、断点类型以及对应的地址。[0090]4053:确认断点实现函数。[0091]4054:使用工具链进行编译。编译的内容包括,断点数据表、断点实现函数及断点服务函数。[0092]408:目标板从U盘读取目标文件。实际应用时的文件读取,可以通过网络、串口、并口等。因为不需要调试器主机和目标板一直连接,所以方式相对灵活。[0093]409:目标文件中函数、数据的重定位。本实施例将在调试器主机单独编译的程序,进行重新定位,以便其在目标板上可以被目标板调用。[0094]410:完成断点设定。调用断点实现函数,对设置的断点数据表进行解析,并完成目标板的断点设定。[0095]413:调试操作,插入信号。[0096]414:触发到断点条件,就是外界条件满足,主程序运行到了设定的断点处,此时,就会产生指令异常中断。[0097]415:运行断点服务程序。若有多个断点,则需要在服务函数中进行判断,此时的中断是由哪个断点产生的,不同的CPU和系统会有所差异。[0098]416:保存调试信息到输出文件。[0099]417:断点服务程序运行结束,正常运行主程序。[0100]418:播出信号。[0101]419:播出次数是否超过预设阈值,如果超过执行420,否则返回413。具体地,所述预设阈值为20次。[0102]420:调试过程产生的数据信息,会以文件的形式存储在内存中。本实施例依然以U盘作为媒介复制出来。[0103]421:调试器主机在读入调试数据后,会进行解析。[0104]对应于上述方法,本发明还提供一种嵌入式系统的调试装置,应用于调试器主机,包括:[0105]断点执行模块,用于接收用户输入的调试命令,根据所述调试命令在主程序中设定断点并编写断点服务程序;[0106]文件产生模块,用于对所述断点数据和断点服务程序进行单独编译产生目标文件;[0107]文件复制模块,用于将所述目标文件复制到所述需要进行调试的目标板上;[0108]文件接收模块,用于接收并解析所述进行调试的目标板产生的输出文件。[0109]进一步,本发明所述目标文件为Elf格式中的适于连接的可重定位文件或者Elf格式中的共享目标文件。[0110]进一步,本发明所述目标文件通过离线方式复制到所述需要进行调试的目标板上。[0111]进一步,本发明所述断点为软件断点、硬件断点和观察点中至少一种。[0112]进一步,本发明所述断点服务程序包括对所述源程序中函数、全局变量和局部变量的调用。[0113]进一步,本发明所述函数、全局变量的调用通过导出的符号表进行;[0114]如所述局部变量存在于堆栈中,所述编译时产生与所述局部变量对应的地址信息;否则,所述编译时需要重新设定与所述局部变量对应的设定条件。[0115]进一步,本发明,所述文件产生模块包括:[0116]解析单元,用于解析断点数据并产生断点数据表;[0117]中断单元,用于确认断点实现函数,所述断点实现函数令主程序运行到断点位置时,产生未定义指令异常,进入中断;[0118]编译单元,用于对所述断点数据表、断点实现函数以及断点服务程序进行编译,产生目标文件。[0119]进一步,本发明所述编译时增加-G0选项。[0120]进一步,本发明所述装置还包括:[0121]工具链设定模块,用于设定工具链;[0122]所述解析断点数据为利用所述工具链解析断点数据;[0123]所述对断点数据表、断点实现函数以及断点服务程序进行编译为利用所述工具链对断点数据表、断点实现函数以及断点服务程序进行编译;[0124]所述解析进行调试的目标板产生的信息文件为利用所述工具链解析进行调试的目标板产生的信息文件。[0125]对应于上述方法,本发明还提供一种嵌入式系统的调试装置,应用于需要进行调试的目标板,包括:[0126]文件载入模块,用于复制调试器主机产生的目标文件,并调用所述目标文件所包含的函数和数据进行重新定位;[0127]断点设定模块,用于完成对需要进行调试的目标板的断点设定;[0128]文件保存模块,用于进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件;[0129]文件发送模块,用于复制所述输出文件到调试器主机。[0130]进一步,本发明所述目标文件为Elf格式中的适于连接的可重定位文件或者Elf格式中的共享目标文件。[0131]进一步,本发明所述文件载入模块包括:[0132]存储单元,用于将所述调试器主机产生的目标文件打开,从文件头开始依次读入和解析文件各个部分,并把所述目标文件中的运行段载入内存;[0133]重定位单元,用于根据对所述运行段分配的内存地址以及重定位辅助段所提供的信息重定位运行段中所需要重定位的部分,令所述需要进行调试的目标板的主程序获得重定位的所述目标程序地址即可运行所述目标程序。[0134]进一步,本发明所述主程序在编译时产生符号名称与地址对应的外部符号表供所述目标文件使用。[0135]进一步,本发明所述断点设定模块包括:[0136]调用单元,用于调用目标文件中的断点实现函数,所述断点实现函数令所述主程序运行到断点位置时,产生未定义指令异常,进入中断;[0137]设定单元,用于解析断点数据表,完成对需要进行调试的目标板的断点设定。[0138]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。【权利要求】1.一种嵌入式系统的调试方法,应用于调试器主机,其特征在于,包括:接收用户输入的调试命令,根据所述调试命令在主程序中设定断点并编写断点服务程序;对所述断点数据和断点服务程序进行单独编译产生目标文件;将所述目标文件复制到所述需要进行调试的目标板上;接收并解析所述进行调试的目标板产生的输出文件。2.根据权利要求1所述的方法,其特征在于,所述目标文件为Elf格式中的适于连接的可重定位文件或者Elf格式中的共享目标文件。3.根据权利要求1所述的方法,其特征在于,所述目标文件通过离线方式复制到所述需要进行调试的目标板上。4.根据权利要求1所述的方法,其特征在于,所述断点为软件断点、硬件断点和观察点中至少一种。5.根据权利要求1所述的方法,其特征在于,所述断点服务程序包括对所述源程序中函数、全局变量和局部变量的调用。6.根据权利要求5所述的方法,其特征在于,所述函数、全局变量的调用通过导出的符号表进行;如所述局部变量存在于堆栈中,所述编译时产生与所述局部变量对应的地址信息;否贝1J,所述编译时需要重新设定与所述局部变量对应的设定条件。7.根据权利要求6所述的方法,其特征在于,所述对断点数据和断点服务程序进行编译产生目标文件包括:解析断点数据并产生断点数据表;确认断点实现函数,所述断点实现函数令主程序运行到断点位置时,产生未定义指令异常,进入中断;对所述断点数据表、断点实现函数以及断点服务程序进行编译,产生目标文件。8.根据权利要求7所述的方法,其特征在于,所述编译时增加-GO选项。9.根据权利要求7所述的方法,其特征在于,所述方法还包括:设定工具链;所述解析断点数据为利用所述工具链解析断点数据;所述对断点数据表、断点实现函数以及断点服务程序进行编译为利用所述工具链对断点数据表、断点实现函数以及断点服务程序进行编译;所述解析进行调试的目标板产生的信息文件为利用所述工具链解析进行调试的目标板产生的信息文件。10.-种嵌入式系统的调试方法,应用于需要进行调试的目标板,其特征在于,包括:复制调试器主机产生的目标文件,并调用所述目标文件所包含的函数和数据进行重新定位;完成对需要进行调试的目标板的断点设定;进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件;复制所述输出文件到调试器主机。11.根据权利要求10所述的方法,其特征在于,所述目标文件为Elf格式中的适于连接的可重定位文件或者Elf格式中的共享目标文件。12.根据权利要求11所述的方法,其特征在于,所述复制调试器主机产生的目标文件,并调用目标文件所包含的函数和数据进行重新定位包括:将所述调试器主机产生的目标文件打开,从文件头开始依次读入和解析文件各个部分,并把所述目标文件中的运行段载入内存;根据对所述运行段分配的内存地址以及重定位辅助段所提供的信息重定位运行段中所需要重定位的部分,令所述需要进行调试的目标板的主程序获得重定位的所述目标程序地址即可运行所述目标程序。13.根据权利要求11所述的方法,其特征在于,所述主程序在编译时产生符号名称与地址一一对应的外部符号表供所述目标文件使用。14.根据权利要求13所述的方法,其特征在于,所述完成对需要进行调试的目标板的断点设定包括:调用目标文件中的断点实现函数,所述断点实现函数令所述主程序运行到断点位置时,产生未定义指令异常,进入中断;解析断点数据表,完成对需要进行调试的目标板的断点设定。15.-种嵌入式系统的调试装置,应用于调试器主机,其特征在于,包括:断点执行模块,用于接收用户输入的调试命令,根据所述调试命令在主程序中设定断点并编写断点服务程序;文件产生模块,用于对所述断点数据和断点服务程序进行单独编译产生目标文件;文件复制模块,用于将所述目标文件复制到所述需要进行调试的目标板上;文件接收模块,用于接收并解析所述进行调试的目标板产生的输出文件。16.根据权利要求15所述的装置,其特征在于,所述目标文件为Elf格式中的适于连接的可重定位文件或者Elf格式中的共享目标文件。17.根据权利要求15所述的装置,其特征在于,所述目标文件通过离线方式复制到所述需要进行调试的目标板上。18.根据权利要求15所述的装置,其特征在于,所述断点为软件断点、硬件断点和观察点中至少一种。19.根据权利要求15所述的装置,其特征在于,所述断点服务程序包括对所述源程序中函数、全局变量和局部变量的调用。20.根据权利要求19所述的装置,其特征在于,所述函数、全局变量的调用通过导出的符号表进行;如所述局部变量存在于堆栈中,所述编译时产生与所述局部变量对应的地址信息;否贝1J,所述编译时需要重新设定与所述局部变量对应的设定条件。21.根据权利要求20所述的装置,其特征在于,所述文件产生模块包括:解析单元,用于解析断点数据并产生断点数据表;中断单元,用于确认断点实现函数,所述断点实现函数令主程序运行到断点位置时,产生未定义指令异常,进入中断;编译单元,用于对所述断点数据表、断点实现函数以及断点服务程序进行编译,产生目标文件。22.根据权利要求21所述的装置,其特征在于,所述编译时增加-GO选项。23.根据权利要求22所述的装置,其特征在于,所述装置还包括:工具链设定模块,用于设定工具链;所述解析断点数据为利用所述工具链解析断点数据;所述对断点数据表、断点实现函数以及断点服务程序进行编译为利用所述工具链对断点数据表、断点实现函数以及断点服务程序进行编译;所述解析进行调试的目标板产生的信息文件为利用所述工具链解析进行调试的目标板产生的信息文件。24.-种嵌入式系统的调试装置,应用于需要进行调试的目标板,其特征在于,包括:文件载入模块,用于复制调试器主机产生的目标文件,并调用所述目标文件所包含的函数和数据进行重新定位;断点设定模块,用于完成对需要进行调试的目标板的断点设定;文件保存模块,用于进行调试操作,当触发断点条件时,运行断点服务程序,并将调试信息保存到输出文件;文件发送模块,用于复制所述输出文件到调试器主机。25.根据权利要求24所述的装置,其特征在于,所述目标文件为Elf格式中的适于连接的可重定位文件或者Elf格式中的共享目标文件。26.根据权利要求25所述的装置,其特征在于,所述文件载入模块包括:存储单元,用于将所述调试器主机产生的目标文件打开,从文件头开始依次读入和解析文件各个部分,并把所述目标文件中的运行段载入内存;重定位单元,用于根据对所述运行段分配的内存地址以及重定位辅助段所提供的信息重定位运行段中所需要重定位的部分,令所述需要进行调试的目标板的主程序获得重定位的所述目标程序地址即可运行所述目标程序。27.根据权利要求26所述的装置,其特征在于,所述主程序在编译时产生符号名称与地址一一对应的外部符号表供所述目标文件使用。28.根据权利要求27所述的装置,其特征在于,所述断点设定模块包括:调用单元,用于调用目标文件中的断点实现函数,所述断点实现函数令所述主程序运行到断点位置时,产生未定义指令异常,进入中断;设定单元,用于解析断点数据表,完成对需要进行调试的目标板的断点设定。【文档编号】G06F11/36GK104063319SQ201410294240【公开日】2014年9月24日申请日期:2014年6月26日优先权日:2014年6月26日【发明者】王泰运,金霞,隋吉红申请人:上海凌阳科技有限公司,凌阳科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1