专利名称::一种嵌入式系统的实时调试定位方法及其装置的制作方法
技术领域:
:本发明涉及嵌入式系统领域的实时调试和打印重定向处理技术,尤其涉及一种嵌入式系统的实时状态下的调试和/或重定向实现方法及其装置。
背景技术:
:在通信系统中,通常的调试手段一般采用TELNET(Telnet服务是最早的远程访问服务。它是在网络发展的早期,所有的操作系统还基于命令模式控制时,为了解决用户远程维护主机、远程办公等用户需求而特意开发的一个服务,被一直沿用到现在。)或者其它第三方工具如SSH(SSH的英文全称是SecureShell,通过使用SSH,能够把任何传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗;更有一个额外的好处就是传输的数据是经过压缩的,所以能够加快传输的速度。)等工具并采用特殊的协议如TCP(TransmissionControlProtocol,传输控制协议)等实现前台代理设备和终端设备之间的消息交互,完成前台调试信息的打印。当前台代理设备不配置这种协议或者没有这样的模块来处理时,问题就显的不容易实现,特别是设备需要降低成本时,尤其如此。显然,简单的实时调试方法更适合于应用到这种嵌入式环境中。所以,就需要改进现有技术中的调试方式。
发明内容本发明的目的在于提供一种嵌入式系统的实时调试定位方法及其装置,其便于应用模块解析输入的调试命令和对调试信息进行输出,并且实时跟踪调试中发现的问题,对于解决现有嵌入式调试技术需要协议支持等问题和快速定位问题有一定的帮助。为了实现上述目的,本发明采用以下技术方案本发明提供的一种嵌入式系统的实时调试定位方法,该方法包括以下步骤A、查询用户通过所述终端输入的用户命令;B、通过查找一预设符号表,解析所述用户命令,获取对应的函数指令;C、执行所述函数指令;D、向所述终端返回关于执行结果的提示信息。所述方法中,所述步骤B中的预设符号表包括命令注册表,该表用于记录嵌入式系统的用户命令注册信息,该信息至少包括命令字符串,以及与该命令字符串对应的用户命令指令集或者函数例程。所述方法中,所述命令注册表的生成方法包括以下步骤接收用户通过所述终端输入的注册信息,并将该信息中的命令字符串、及与该命令字符串对应的函数例程存储在一注册数据区中。所述方法中,所述命令注册表的生成方法包括以下步骤接收用户通过所述终端、调用嵌入式系统的应用程序编程接口函数库所获得的注册信息,并将该信息中的命令字符串、以及面向所调用的应用程序编程接口函数库的函数指针存储在一注册函数库中。所述方法中,所述步骤B中的预设符号表还包括全局符号表,该表用于记录嵌入式系统中的全局变量和函数列表;所述函数列表至少包括函数名称,函数地址,以及函数类型。所述方法中,所述全局符号表的生成方法包括以下步骤Sl、由标准编译器和连接器生成可执行和链接格式的目标文件;S2、将该目标文件生成SYMBOL.C格式的符号表存储文件;S3、利用标准编译生成工具,将所述符号表存储文件生成可连接的目标文件和可执^f于文^f牛。所述方法中,所述步骤B包括以下步骤Bl、解析用户通过所述终端输入的用户命令,获取相应的命令字符串和函数名称;B2、在所述命令注册表中,查找与所述命令字符串相匹配的函数例程或者函数指针;若查找到所述函数例程或者函数指针,则获取对应的函数指令;若没有查找到所述函数例程或者函数指针,则执行步骤B3;B3、在所述全局符号表中,查找与所迷函数名称相匹配的函数类型和函数地址,根据查找到的结果,解析所述命令字符串中涉及的函数参数,并根据所述函数地址获取相关的函数指令。所述方法中,所述用户命令指令集、函数例程或者函数列表记录有关于当前终端发生切换、需将打印信息切换到另一终端的函数指令。本发明还提供了一种嵌入式系统的实时调试定位器,所述调试定位器通过接口模块与用于输入用户命令的终端之间,所述实时调试定位器包括符号表,用于记录用户命令、及与该命令对应的函数指令;命令解析器,用于通过查找所述符号表,获取与用户命令相对应的函数指令;以及前台代理模块,用于查询所述用户命令,执行所述命令解析器获得的函数指令,并向所述终端返回关于执行结果的提示信息。所述调试定位器中,所述符号表包括命令注册表,该表用于记录嵌入式系统的用户命令注册信息,该信息至少包括命令字符串,以及与该命令字符串对应的用户命令指令集或者函数例程;以及全局符号表,该表用于记录嵌入式系统中的全局变量和函数列表,所述函数列表至少包括函数名称,函数地址,以及函数类型。发明效果本发明通过在嵌入式系统的应用层上添加一用于记录用户命令、及与该命令对应的函数指令的符号表,来利用查表的方式完成解析终端命令的工作,实现了实时跟踪调试中的问题,并方便嵌入式系统应用模块的调试命令输入和调试信息输出,对解决现有嵌入式调试技术需要协议支持等问题和快速定位问题有一定的帮助,而且通过更改符号表中的相关函数指令可以帮助使用者随时打印自己的调试信息。图l是应用本发明方法的实施原理图;图2是本发明的消息处理的流程图。具体实施例方式在嵌入系统调试领域,本发明主要实现实时调试命令的执行和/或打印,完成用户调试命令的输出,对用户的命令本身的实现并没有特殊要求。为使本发明的目的、技术方案和优点更加清楚,下面将对本发明作进一步地详细描述。本发明从终端输入命令解析的角度出发,提前在嵌入式系统中设置了一预设符号表,用于记录用户命令、及与该命令对应的函数指令,然后通过查表的方式实时解析用户通过终端输入的命令。本发明所提供的实时调试定位方法,具体过程如下第一步查询用户通过所述终端输入的用户命令;第二步通过查找一预设符号表,解析所述用户命令,获取对应的函数指令;第三步执行所述函数指令;第四步向所述终端返回关于执行结果的提示信息。上述方法可以通过软件编程的方式,在嵌入式系统的应用层上实现其相应的功能。通常由常规调试流程及嵌入式系统的实时Shell功能来完成(Shell是一种具备特殊功能的程序,它是介于使用者和UNIX/Linux操作系统之核心程序(kernel)间的一个接口。)人机对话界面,可通过设置前台代理模块来完成上述第一步、第三步和第四步的任务,定时查询用户从终端上录入的信息,且做密码验证工作,解析成功后执行相关命令,或者给终端用户输出正确等提示信息,或者对打印的重定向做实时的捕获和切换。上述第二步所述的预设符号表,可以包括命令注册表,该表用于记录嵌入式系统的用户命令注册信息,完成系统用户命令的注册,该表主要有两个内容第一项是命令字符串,另一个是用户命令指令集或者函数例程,其中,还可以包括其他相关内容。这张表的生成方法主要有以下两种方式(1)本发明提供一注册数据区,由用户自己来注册,注册的格式为{"字符串",函数例程}。具体过程是接收用户通过所述终端输入的注册信息,并将该信息中的命令字符串、及与该命令字符串对应的函数例程存储在一注册数据区中,用以建立命令注册表。这个过程也是在系统开始的时候进行。(2)本发明提供一注册函数库,由用户通过调用API接口(ApplicationProgrammingInterface,应用程序编程接口)函数库来实现,函数库格式为REG—CMD一FUNC("字符串",函数指针)。具体过程是接收用户通过所述终端、调用嵌入式系统的应用程序编程接口函数库所获得的注册信息,并将该信息中的命令字符串、以及面向所调用的应用程序编程接口函数库的函数指针存储在一注册函数库中,用以建立命令注册表。这个过程是在系统的初始上电的过程来调用完成。通过上面的接口方式就可以实现命令注册表的生成。在命令注册表的Jo出上,所述的预设符号表还可以包括全局符号表该表包括了嵌入式系统中的全局变量和函数列表,其中至少包括如下几项内容{函数(或符号)名称,函数(或符号)地址,函数(或符号)类型等}。这张表的生成方法相对比较复杂,主要有如下步骤首先,要由标准编译器和连接器生成的OBJECT1目标文件,该目标文件为嵌入式系统中目标文件的一种格式,称作ELF(ExecutableandLinkingFormat,可执行和链接格式,ELF文件是x86Li皿x系统下的一种常用目标文件(objectfile)格式。);其次,使用编译工具将该OBJECT1目标文件生成SYMBOL.C格式的符号表存储文件;这里的编译工具的工作过程主要是按照ELF的格式来检索匹配,分析这个目标文件OBJECT1文件,输出SYMBOL.C符号表存储文件;然后,再利用标准编-泽生成工具,将符号表存储文件SYMBOL.C生成可连接的OBJECT2目标文件和可执行文件;这样全局符号表就包含在本发明的运行系统中了,可以由实现本发明方法的组件进行访问。可见,本发明还提供了一种全局符号表的生成编译方法,其可以生成符号表源文件,该源文件生成后经编译器编译链接后一起生成目标文件,并最终生成可用的全局符号表。这个全局符号表是用于补充上述命令注册表,其作用可以参见以下关于上述第二步任务的详细实施过程步骤B1、接收用户通过终端输入的调试命令(为用户命令的一种,本发明主要是针对调试命令,但不限于调试命令,对于其他命令也可以实现)解析该命令,获取命令字符串,对针对系统的命令采用特殊的标识方式来区别,根据习惯可以采用",,或者"!"等字符来区分,对有参数和无参数的命令分别走不同的分支,如何分析命令获得相应的字符串可以参见现有技术的相关方法。步骤B2、命令字符串收齐后,在命令注册表中,查找与所述命令字符串相匹配的函数例程或者函数指针;若查找到所述函数例程或者函数指针,则获取对应的函数指令;若没有查找到所述函数例程或者函数指针,则执行步骤B3;步骤B3、在全局符号表中,根据与调试命令相对应的函数名称查找相匹配的函数类型和函数地址,根据查找到的结果,解析所述命令字符串中涉及的函数参数,并根据所述函数地址获取相关的函数指令。本发明的方法主要针对函数类型,如果获得的命令字符串为变量类型则返回错误,用于在终端上显示提示信息。从上述技术方案可知,如果在用户命令指令集、函数例程或者函数列表中记录关于当前终端发生切换、需将打印信息切换到另一终端的函数指令,对应的当终端发生改变/切换时,向系统发出相应的用户命令,那么当系统捕获到终端变更后的命令后,就可以根据命令解析结果完成在终端打印的重定向技术,即当登录的设备退出后,或重新登录后,嵌入式系统的前台代理模块均能够把打印信息重定向到新的终端上,实现实时调试信息打印的重定向。基于上述方法,本发明还提供了一种实现上述方法的嵌入式系统的实时调试定位器,其可以是通过软件编程在嵌入式系统上添加一功能模块。以下参见图1和图2详细说明本发明的调试定位器的实现方式。如图1所示,所述调试定位器130可以通过嵌入式系统的接口模块与外部一用于提供用户命令信息输入的调试终端110连接,所述调试定位器130与调试终端IIO之间的连接介质120可以是终端线,串口或者网络线等数据传输线,可见,所述调试定位器130在嵌入式系统的前台代理设备与调试终端110之间起到了重要的信息交互作用。所述实时调试定位器130包括符号表,用于记录用户命令、及与该命令对应的函数指令,这个符号表可以包括命令注册表132,以及全局符号表133,这两个表的相关内容参见上述说明;命令解析器131,用于通过查找所述符号表,获取与所述终端输入的用户命令相对应的函数指令;以及前台代理模块134,用于查询来自所述终端的用户命令,执行所述命令解析器获得的函数指令,并向所述终端返回关于执行结果的提示信息。这里的前台代理模块134执行所述函数指令;其主要完成命令的查询,命令匹配,查找命令,以及执行和/或调试信息的打印输出。这里的命令解析器131,用户可通过调试终端110向其输入调试指令,命令解析器131对该命令输入的合法性进行检查和解析,先匹配命令注册表132,如果是系统内部已注册命令,则执行注册命令;否则,查找全局符号表133,如果查找匹配到,则执行符号表中的对应命令;如果命令没找到,则向终端返回该命令不存在的提示信息。如图2所示,本发明调试定位器130的工作原理如下S201:调试终端200发起终端注册命令,根据用户需要,设置终端注册功能,并进行注册流程分析,进入S202流程;S202:命令解析器220鉴权通过,向调试终端200返回鉴权通过的提示信息,如果用户和密码验证正确,则进入S203流程;S203:用户通过调试终端200输入用户调试命令,该命令由命令解析器220来接收,完成命令合法性验证后,开始分析是否是用户命令和系统调试命令;S204:通过输入的用户命令字符串,检索命令注册表,若查找到与用户命令字符串相关的用户命令指令集或者函数例程,则获取相关函数指令,并跳至步骤S206;若没有查找到与用户命令字符串相关的用户命令指令集或者函数例程,则跳至S205;S205:检索全局符号表,通过命令(或函数)名称来检索全局符号表,并解析出系统的类型和符号表地址及大小,获取相关函数指令;S206:通过前台代理模块对匹配到的函数命令进行执行;S207:输出解析命令,如果涉及重定向,则转入重定向流程,即将调试信息转向新的终端;S208:向调试终端200输出命令执行结果,即显示和/或打印。综上所述,本发明的方法和装置主要是在终端和嵌入式系统之间建立一个信息通道,完成调试信息的解析和/或输出打印。本发明的好处在于从终端输入命令解析的角度出发,采用明确的解析手段解决用户命令的方法,提供了打印重定向技术完成调试命令的执行输出,最终给出了一种嵌入式系统的快速调试定位问题的方法,提高了通信系统中开发和调试处理的效率,可应用于嵌入式系统的开发和调试领域。总之,应用本发明可以应用于嵌入式系统的实时状态下的调试,对于系统的调试和提高效率有很大帮助。上述各具体步骤的举例说明较为具体,并不能因此而认为是对本发明的专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。权利要求1、一种嵌入式系统的实时调试定位方法,其特征在于,所述方法包括以下步骤A、查询用户通过所述终端输入的用户命令;B、通过查找一预设符号表,解析所述用户命令,获取对应的函数指令;C、执行所述函数指令;D、向所述终端返回关于执行结果的提示信息。2、根据权利要求1所述的方法,其特征在于,所述步骤B中的预设符号表包括命令注册表,该表用于记录嵌入式系统的用户命令注册信息,该信息至少包括命令字符串,以及与该命令字符串对应的用户命令指令集或者函数例程。3、根据权利要求2所述的方法,其特征在于,所述命令注册表的生成方法包括以下步骤接收用户通过所述终端输入的注册信息,并将该信息中的命令字符串、及与该命令字符串对应的函数例程存储在一注册数据区中。4、根据权利要求2所述的方法,其特征在于,所述命令注册表的生成方法包括以下步骤接收用户通过所述终端、调用嵌入式系统的应用程序编程接口函数库所获得的注册信息,并将该信息中的命令字符串、以及面向所调用的应用程序编程接口函数库的函数指针存储在一注册函数库中。5、根据权利要求2所述的方法,其特征在于,所述步骤B中的预设符号表还包括全局符号表,该表用于记录嵌入式系统中的全局变量和函数列表;所述函数列表至少包括函数名称,函数地址,以及函数类型。6、根据权利要求5所述的方法,其特征在于,所述全局符号表的生成方法包括以下步骤51、由标准编译器和连接器生成可执行和链接格式的目标文件;52、将该目标文件生成SYMBOL.C格式的符号表存储文件;53、利用标准编译生成工具,将所述符号表存储文件生成可连接的目标文件和可执行文件。7、根据权利要求5所述的方法,其特征在于,所述步骤B包括以下步骤Bl、解析用户通过所述终端输入的用户命令,获取相应的命令字符串和函数名称;B2、在所述命令注册表中,查找与所述命令字符串相匹配的函数例程或者函数指针;若查找到所述函数例程或者函数指针,则获取对应的函数指令;若没有查找到所述函数例程或者函数指针,则执行步骤B3;B3、在所述全局符号表中,查找与所述函数名称相匹配的函数类型和函数地址,根据查找到的结果,解析所述命令字符串中涉及的函数参数,并根据所述函数地址获取相关的函数指令。8、根据权利要求2或5所述的方法,其特征在于,所述用户命令指令集、函数例程或者函数列表记录有关于当前终端发生切换、需将打印信息切换到另一终端的函数指令。9、一种嵌入式系统的实时调试定位器,所述调试定位器通过接口模块与用于输入用户命令的终端之间,其特征在于,所述实时调试定位器包括符号表,用于记录用户命令、及与该命令对应的函数指令;命令解析器,用于通过查找所述符号表,获取与用户命令相对应的函数指令;以及前台代理模块,用于查询所述用户命令,执行所述命令解析器获得的函数指令,并向所述终端返回关于执行结果的提示信息。10、根据权利要求9所述的调试定位器,其特征在于,所述符号表包括命令注册表,该表用于记录嵌入式系统的用户命令注册信息,该信息至少包括命令字符串,以及与该命令字符串对应的用户命令指令集或者函数例程;以及全局符号表,该表用于记录嵌入式系统中的全局变量和函数列表,所述函数列表至少包括函数名称,函数地址,以及函数类型。全文摘要本发明公开了一种嵌入式系统的实时调试定位方法及其装置,所述方法包括以下步骤A.查询用户通过所述终端输入的用户命令;B.通过查找一预设符号表,解析所述用户命令,获取对应的函数指令;C.执行所述函数指令;D.向所述终端返回关于执行结果的提示信息。本发明实现了实时跟踪调试中的问题,并方便嵌入式系统应用模块的调试命令输入和调试信息输出。文档编号H04L12/24GK101340314SQ200810142498公开日2009年1月7日申请日期2008年8月11日优先权日2008年8月11日发明者王井贵,王家文,剑程申请人:中兴通讯股份有限公司