专利名称:嵌入式软件辅助调试方法
技术领域:
本发明涉及计算机技术,具体地说,涉及嵌入式软件的调试技术。
随着微处理机在通讯产品,医疗设备和信息家电等领域越来越广泛的应用,与之相对应嵌入式软件的功能也日益复杂,规模逐渐变得庞大。这样在嵌入式软件的发展过程中就不得不面对一个严峻的问题即软件的质量问题。但嵌入式软件的开发调试过程有相当的难度,这是由其特点所决定的嵌入式软件一般在嵌入式操作系统上运行,其操作系统平台与应用程序一般合在一起构成整个嵌入式软件。它的硬件运行平台常常是某些专用处理器芯片,因此嵌入式软件的开发调试一般都需要专门的硬件或软件工具支持,但其支持仅限于开发阶段,且需要编译器生成专门的调试版本。等系统调试结束,生成运行版本,脱离调试环境运行后,这些工具就无能为力了。
嵌入式系统一般需要长时间可靠的工作,而调试阶段又不能发现所有的错误,这样在嵌入式系统的工作过程中可能会有故障随机发生,而故障发生后,又缺乏对故障现场分析调试的有效手段,往往很难扑捉住故障并进行故障定位。给嵌入式软件的质量提高带来了困难。
本发明的目的就是针对现有技术的上述缺点,提出一种比较通用的嵌入式软件运行版本的辅助调试方法,它在一定程度上克服了目前的各种商用调试手段主要针对调试版本的弱点,在嵌入式系统的实际运行阶段可以提供调试手段,通过该工具可以输出嵌入式软件在运行中发生的故障信息,并能够对故障现场做进一步的分析,以找到故障的原因,从而使嵌入式软件的质量得到进一步的提高,该方法是对各种商用调试手段的重要补充。
为了实现本发明目的,采用以下技术方案首先由预编译模块对编译时生成的符号表文件进行扫描分析,生成调试信息文件,存放于调试主机;嵌入式系统中的调试代理模块在运行时记录故障信息,当对故障现场进行分析时,通过嵌入式系统的通讯口连接调试主机,故障信息经通讯链路送至调试主机的调试接口模块,并由调试接口模块显示;调试接口模块还负责接收调试命令,经调试信息文件解释后再送至调试代理模块,调试代理模块将相应信息返回调试接口模块显示。
所述的预编译模块是这样对符号表文件进行扫描分析的所述的符号表文件是在运行版本编译时生成的,经预编译模块处理后生成的调试信息文件包含以下信息全局变量名,静态变量名的字符串表示,各变量在内存中的起始物理地址,以及两者之间的对应关系。该调试信息文件仅存在于调试主机上,不占用嵌入式系统的存储空间。
所述的调试代理模块存在于嵌入式系统中,它负责以下功能通讯接口的驱动;接收调试接口模块发送来的调试命令并将相应的信息返回调试接口模块;提供对应用程序的故障信息输出接口,在已连接调试接口模块的情况下,将故障信息发送给调试接口模块。调试代理模块的存在不影响系统的正常运行。
所述的调试接口模块存在于调试主机上,调试接口模块一方面接收用户的调试命令,一方面处理调试代理模块返回的调试信息。
当调试接口模块接收到命令后,根据消息的来源判定是来自用户的调试命令还是调试代理模块返回的调试信息,若为调试代理模块返回的调试信息,则对其中的控制符进行解释,并输出到磁盘或显示器;若为用户的调试命令,则首先由命令中给出的变量名为关键字,在调试信息文件中找到该变量的物理地址,并判断是对故障现场的查询命令还是修改命令;然后给嵌入式系统中的调试代理模块发送相应的命令,指示其返回指定地址的数值或将其修改为某值,最后等待调试代理模块返回信息并显示。
应用本发明提供的嵌入式软件辅助调试方法,可以有效地监测记录嵌入式软件在运行时的故障信息。当故障发生时,可以对故障现场进行查询修改,给故障的分析定位提供了有力的支持。本发明提供的方法,并不局限于某一产品,也不受运行平台的限制,是一个比较通用的调试方法,可以大大提高嵌入式系统的可调试性,改善调试效率和程序质量,并可大大降低在嵌入式软件调试方面的开销。
下面通过具体的实施例并结合附图对本发明作进一步详细地描述。
图1是利用本发明方法进行工作的框图;图2是调试接口模块的工作流程。
在图1中,描述了本辅助调试方法的工作过程应用程序模块1和调试代理模块2运行于嵌入式系统上,调试接口模块6运行于调试主机上;符号表文件3是对应用程序进行编译连接时产生的。在调试前,预编译模块4将对符号表文件3进行预处理,得到调试信息文件5,预编译模块4、调试信息文件5与调试接口模块6共存于调试主机上。当嵌入式系统在运行中出现故障时,用嵌入式系统提供的通讯链路连接嵌入式系统和调试主机,并运行调试主机上的调试接口模块6,这时就可以通过一系列的调试命令对嵌入式系统中的故障现场进行观察修改,以定位故障原因。
在图2中,详细地描述了调试接口模块的工作流程调试接口模块一方面接收用户的调试命令,一方面处理调试代理模块返回的调试信息。
若调试接口模块接收到调试代理模块送来的调试信息,则对其中的控制符进行解释,根据控制符的类型确定调试信息的显示方向显示器或磁盘,并显示;接收到用户的调试命令后进行分析,若为故障现场的查询命令,则根据命令参数中的变量名,从调试信息文件中查询到相应变量的起始物理地址,然后将该地址随查询命令一起发送至调试代理模块,等待调试代理模块返回信息,对其中的控制符进行解释,根据控制符的类型确定调试命令的显示方向显示器或磁盘,并显示;若为故障现场的修改命令,则根据命令参数中的变量名,从调试信息文件中查询到相应变量的起始物理地址,然后将该地址和修改后的新值随查询命令一起发送至调试代理模块,等待调试代理模块返回信息,对其中的控制符进行解释,根据控制符的类型确定修改命令的显示方向显示器或磁盘,并显示;
在某嵌入式系统中,采用了AMD公司的186处理器,提供了一个内部串口,编译器采用了BORLAND公司的BC31。在该系统中,调试代理模块作为一个独立的模块加入MAKEFILE文件(MAKEFILE是编译连接控制文件,用来控制将哪些模块以何种方式编译连接在一起),并在其连接部分加入/s控制参数(是连接时的一个控制选项,该选项作用是连接时产生详细符号表),以产生详细符号表,然后与应用程序部分在一起编译连接后运行。预编译模块为一在调试主机上独立运行的可执行程序,运行后它对编译后产生的符号表进行分析,得到调试信息文件,将该文件存放于调试主机。调试接口部分也为一在调试主机上独立运行的可执行程序。应用本发明提供的方法时将186处理器的串口与调试主机的串口相连,运行调试接口程序,就可以对嵌入式系统上的故障信息进行观察、修改,而不影响应用系统本身的运行。
权利要求
1.一种嵌入式软件辅助调试方法,包括以下步骤1)预编译模块(4)对编译时生成的符号表文件(3)进行扫描分析,生成调试信息文件(5),存放于调试主机;2)嵌入式系统中的调试代理模块(2)在运行时记录故障信息,当对故障现场进行分析时,通过嵌入式系统的通讯口连接调试主机,故障信息经通讯链路送至调试主机的调试接口模块(6),由调试接口模块(6)显示;3)调试接口模块(6)接收调试命令,经调试信息文件(5)解释后再送至调试代理模块(2),调试代理模块(2)将相应信息返回调试接口模块(6)显示。
2.如权利要求1所述的一种嵌入式软件辅助调试方法,其特征在于所述的预编译模块(4)对符号表文件(3)进行扫描分析的过程是所述的符号表文件(3)是在运行版本编译时生成的,经预编译模块(4)处理后生成调试信息文件(5)。
3.如权利要求1或2所述的一种嵌入式软件辅助调试方法,其特征在于所述的调试代理模块(2)的工作过程是接收调试接口模块(6)发送来的调试命令,并将相应的信息返回调试接口模块(6),并提供对应用程序(1)的故障信息输出接口。
4.如权利要求1或2所述的一种嵌入式软件辅助调试方法,其特征在于调试接口模块(6)的工作流程如下调试接口模块一方面接收用户的调试命令,一方面处理调试代理模块返回的调试信息若调试接口模块接收到调试代理模块送来的调试信息,则对其中的控制符进行解释,根据控制符的类型确定调试信息的显示方向显示器或磁盘,并显示;接收到用户的调试命令后进行分析,若为故障现场的查询命令,则根据命令参数中的变量名,从调试信息文件中查询到相应变量的起始物理地址,然后将该地址随查询命令一起发送至调试代理模块,等待调试代理模块返回信息,对其中的控制符进行解释,根据控制符的类型确定调试命令的显示方向显示器或磁盘,并显示若为故障现场的修改命令,则根据命令参数中的变量名,从调试信息文件中查询到相应变量的起始物理地址,然后将该地址和修改后的新值随查询命令一起发送至调试代理模块,等待调试代理模块返回信息,对其中的控制符进行解释,根据控制符的类型确定修改命令的显示方向显示器或磁盘,并显示。
全文摘要
一种嵌入式软件辅助调试方法,首先由预编译模块对编译时生成的符号表文件进行扫描分析,生成调试信息文件;嵌入式系统中的调试代理模块在运行时记录故障信息,当分析故障现场时,通过嵌入式系统的通讯口连接调试主机,故障信息经调试接口模块显示;调试接口模块还负责接收调试命令,经调试信息文件解释后再送至调试代理模块,调试代理模块将相应信息返回调试接口模块显示。能够克服目前的各种商用调试手段弱点,提高嵌入式软件质量。
文档编号G06F11/36GK1286431SQ99117260
公开日2001年3月7日 申请日期1999年11月30日 优先权日1999年11月30日
发明者刘韫晖 申请人:深圳市中兴通讯股份有限公司