本发明专利技术公开了一种软件调试的方法和系统,方法包括:使用嵌入式系统描述性语言设置关键性调试信息;按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件;解析所述描述文件,并依据解析的描述文件修改调试代码所生成的可执行文件;依据修改后的可执行文件运行调试代码,并记录调试结果。通过本发明专利技术的方法和系统,在调试时能够减少移植系统的工作量,且具有轻量级、可扩展、可操作性强、平台无关等特点。
【技术实现步骤摘要】
本专利技术涉及嵌入式软件的调试技术,尤其涉及一种软件调试的方法和系统。
技术介绍
调试器作为一种重要的软件调试手段,在软件开发中发挥着十分重要的作用,例如,在对软件缺陷进行跟踪调试时,调试器提供了非常多的功能,其中包括运行、暂停、步进一个进程;设置断点;操作寄存器和内存;捕捉内部异常等。调试器主要包括硬件调试器和软件调试器,硬件调试器的功能强大,但是价格昂贵,使用成本和学习成本都很高;软件调试器通常是对于运行在操作系统层之上的代码进行调试,这种调试不具备可移植性,尤其是对linuX、uC0S、eC0S等软件系统的底层驱动代码的调试支持有限。相关技术中软件调试的工作原理,通常是运行一段代码,通过显示器来查看其输出,根据其输出结果判断是否运行正确。然而,对于系统的底层驱动代码调试、系统初始化阶段的代码调试等情况,此时由于显示器的驱动程序还未加载,显示器还没有输出,也还没有串口、网口等交互手段,因此,传统的软件调试方法并不适用于以上情况的代码调试。针对系统的底层驱动代码、系统初始化阶段的代码等调试需求,相关技术采用一种点灯方式来调试跟踪代码。但是,这种点灯调试方式不能查看程序的调用栈,即使点灯也需要一些对处理器基本的配置工作,可视性差,操作复杂。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种软件调试的方法和系统,以软件调试的方法和系统,以解决点灯调试方式的可视性差、操作复杂等问题。为达到上述目的,本专利技术的技术方案是这样实现的一种软件调试的方法,该方法包括使用嵌入式系统描述性语言设置关键性调试信息;按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件;解析所述描述文件,并依据解析的描述文件修改调试代码所生成的可执行文件;依据修改后的可执行文件运行调试代码,并记录调试结果。所述关键性调试信息包括选取的断点方式、产生断点的物理内存地址、断点到达时需要查看的寄存器、记录异常信息的内存地址。所述按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件,包括将所述关键性调试信息按照预定义的格式存储为后缀是.cfg的描述文件。所述依据解析的描述文件修改调试代码所生成的可执行文件,包括按照Cfg文件的格式修改调试代码所生成的可执行连接文件格式ELF文件,根据处理器指令集,将调试代码插入修改后的ELF文件中,并重新链接修改后的ELF文件。所述依据修改后的可执行文件运行调试代码,并记录调试结果,包括当运行到断点产生处时,解析堆栈寄存器生成文本根式函数调用,并记录函数调用栈的信息、以及要查看的寄存器的内容到记录异常信息的内存地址。一种软件调试的系统,该系统包括用户扩展接口模块,用于使用嵌入式系统描述性语言设置关键性调试信息;扩展调试程序处理引擎,用于按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件;调试处理例程库,用于解析所述扩展调试程序处理引擎中存储的描述文件,并依据解析的描述文件修改调试代码所生成的可执行文件;操作系统处理模块,用于依据扩展调试程序处理引擎中修改后的可执行文件运行调试代码,并记录调试结果。所述关键性调试信息包括选取的断点方式、产生断点的物理内存地址、断点到达时需要查看的寄存器、记录异常信息的内存地址。所述扩展调试程序处理引擎,还用于将所述关键性调试信息按照预定义的格式存储为后缀是.cfg的描述文件。所述调试处理例程库,还用于按照Cfg文件的格式修改调试代码所生成的可执行连接文件格式ELF文件,根据处理器指令集,将调试代码插入修改后的ELF文件中,并重新链接修改后的ELF文件。所述操作系统处理模块,还用于当运行到断点产生处时,解析堆栈寄存器生成文本根式函数调用,并记录函数调用栈的信息、以及要查看的寄存器的内容到记录异常信息的内存地址。本专利技术所提供的一种软件调试的方法和系统,使用嵌入式系统描述性语言设置关键性调试信息;按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件;解析所述描述文件,并依据解析的描述文件修改调试代码所生成的可执行文件;依据修改后的可执行文件运行调试代码,并记录调试结果。这种通过直接修改可执行文件的方式进行代码调试,能够减少移植系统的工作量,特别适用于多核处理器、系统初始化之后才有串口的系统。本专利技术的调试方式具有轻量级、可扩展、可操作性强、平台无关等特点。附图说明图1为本专利技术实施例的一种软件调试的方法流程图;图2为本专利技术实施例中的一种寄存器的示意图;图3为本专利技术实施例的一种软件调试的系统组成结构示意图。具体实施例方式下面结合附图和具体实施例对本专利技术的技术方案进一步详细阐述。本专利技术实施例提供的一种软件调试的方法,如图1所示,主要包括步骤101,使用嵌入式系统描述性语言设置关键性调试信息。关键性调试信息包括选取的断点方式、产生断点的物理内存地址、断点到达时需要查看的寄存器和记录异常信息的内存地址等。调试器的主要功能包括断点调试、堆栈分析等。对于断点调试,主流的调试工具提供的断点调试手段主要是软件断点与硬件断点。软件断点就是在CPU执行到特定位置的代码时使其暂停。软件断点是调试过程中用的最多的断点。软件断点的本质就是一个单字节的指令,用于暂停被执行程序,并将控制权转移给调试器的断点处理函数。以PowerPC处理器为例,PowerPC处理器是一种精简指令集计算机(RISC, ReducedInstruction Set Computer)架构的中央处理器(CPU)。如图2所不为PowerPC处理器中硬件断点寄存器的示意图。有以下指令mtcr r5,该指令不被CPU理解,需要被转换成一种操作码,该指令转换成操作码即为8BC3,如果该指令发生在0x4433221这个地址,则显示为0x44332211 8BC3 mtcr r5为了在这个地址设置断点,暂停CPU,需要将2字节的8BC3操作码转换成一个单字节的操作码,转换后的操作码即为OxCC,显示为0x44332211 CCC3 mtcr r5硬件断点的功能十分强大,PowerPC处理器自带硬件断点寄存器,以实现以下基本的中断功能A、当特定的地址上有指令执行时中断;B、当特定的地址上有数据可以写入时中断;C、当特定的地址上有数据读或写,但不执行时中断。步骤102,按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件。将所述关键性调试信息按照预定义的格式存储为后缀是.Cfg的描述文件。步骤103,解析所述描述文件,并依据解析的描述文件修改调试代码所生成的可执行文件。调试处理例程库解析该描述文件,并按照Cfg文件的格式来修改调试代码所生成的可执行连接文件格式(ELF,Executable and Linkable Format)文件。ELF文件是linux系统下的可执行文件。随后,根据处理器指令集,将代码插入修改后的ELF文件中,并重新链接修改后的ELF文件。上述对调试代码所生成的ELF文件进行修改的内容有选择堆栈调用解析格式、要记录的寄存器名称、数据段内容.data, bss等,这些信息被记录到系统的保留内存地址。步骤104,依据修改后的可执行文件运行调试代码,并记录调试结果。运行调试代码,当运行到断点产生处时,强制跳转到插入代码处,根据PowerPC处理器的二进制进口协议,记录断点出本文档来自技高网...
【技术保护点】
一种软件调试的方法,其特征在于,该方法包括:使用嵌入式系统描述性语言设置关键性调试信息;按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件;解析所述描述文件,并依据解析的描述文件修改调试代码所生成的可执行文件;依据修改后的可执行文件运行调试代码,并记录调试结果。
【技术特征摘要】
1.一种软件调试的方法,其特征在于,该方法包括: 使用嵌入式系统描述性语言设置关键性调试信息; 按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件; 解析所述描述文件,并依据解析的描述文件修改调试代码所生成的可执行文件; 依据修改后的可执行文件运行调试代码,并记录调试结果。2.根据权利要求1所述软件调试的方法,其特征在于,所述关键性调试信息包括:选取的断点方式、产生断点的物理内存地址、断点到达时需要查看的寄存器、记录异常信息的内存地址。3.根据权利要求2所述软件调试的方法,其特征在于,所述按照嵌入式系统软件调试信息的格式存储所述关键性调试信息为描述文件,包括: 将所述关键性调试信息按照预定义的格式存储为后缀是.cfg的描述文件。4.根据权利要求3所述软件调试的方法,其特征在于,所述依据解析的描述文件修改调试代码所生成的可执行文件,包括: 按照cfg文件的格式修改调试代码所生成的可执行连接文件格式ELF文件,根据处理器指令集,将调试代码插入修改后的ELF文件中,并重新链接修改后的ELF文件。5.根据权利要求4所述软件调试的方法,其特征在于,所述依据修改后的可执行文件运行调试代码,并记录调试结果,包括: 当运行到断点产生处时,解析堆栈寄存器生成文本根式函数调用,并记录函数调用栈的信息、以及要查看的寄存器的内容到记录异常信息的内存地址。6.一种软件调试...
【专利技术属性】
技术研发人员:胡亚弟,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。