一种在应用中调试嵌入式系统程序中函数功能的方法与流程

文档序号:17536631发布日期:2019-04-29 14:03阅读:381来源:国知局
本发明涉及一种在应用中调试嵌入式系统程序中函数功能的方法。
背景技术
::在软件设计领域,调试是开发过程中必不可少的环节,通用的桌面操作系统与嵌入式操作系统在调试环境上存在明显的差别。前者,调试器与被调试的程序往往是运行在同一台机器的相同的操作系统上的两个进程,调试器进程通过操作系统专门提供的调用接口(早期unix系统的ptrace调用、如今的进程文件系统等)控制、访问被调试程序进程。后者(又称为远程调试),为了向系统开发人员提供灵活、方便的调试界面,调试器还是运行于通用桌面操作系统的应用程序,被调试的程序则运行于基于特定硬件平台的嵌入式操作系统(也称目标操作系统)。这就带来以下问题:调试器与被调试程序如何通信,被调试程序产生异常如何及时通知调试器,调试器如何控制、访问被调试程序,调试器如何识别有关被调试程序的多任务信息并控制某一特定任务,调试器如何处理某些与目标硬件平台相关的信息(如目标平台的寄存器信息、机器代码的反汇编等)。总之,嵌入式系统的开发调试是比较困难的。目前嵌入式系统在产品定型之后,一旦产品在应用中出现问题,在不断电的情况下对应用程序进行调试目前办法不多,主要使用通讯接口输出调试信息、或者使用专用软件进行功能测试,无法深入对程序进行调试。使用通讯接口输出调试信息的方法在程序执行时不停调试信息,有以下缺点:1)占用cpu资源与内存资源,影响程序执行的实时性与稳定性;2)调试信息的覆盖面有限,无法覆盖所有的函数,否则调试信息将会相当庞大;使用专用软件进行功能调试,只能测试功能是否正常,定位太宽泛,无法覆盖到函数的执行。技术实现要素:本发明所要解决的技术问题是克服现有技术的缺陷,提供一种在应用中调试嵌入式系统程序中函数功能的方法,通过建立函数指针与函数原型之间的对应关系,通过通讯口就可以直接进行函数调用执行,并返回执行结果,为更加细化的调试程序提供了极大的方便。为解决上述技术问题,本发明提供一种在应用中调试嵌入式系统程序中函数功能的方法,其特征是,包括:在嵌入式系统程序中建立函数指针与函数原型之间的对应表格,并添加函数原型解析函数,使用通讯口接收函数调用字符串并进行解析,然后匹配查找表,查找到需要执行的函数指针,最后跳转去执行函数,并返回执行结果。进一步地,建立函数指针与函数原型之间的对应表格,建立的结构体为:其中func为函数指针,name为函数原型字符串。进一步地,接收函数调用字符串使用的通讯口为串口、usb口或者以太网接口。进一步地,解析函数调用语句,建立的结构体为:id用于存放指定解析函数调用语句中函数在funcnametable中的位置,inputparanum用于存放输入参数数量,inputparatype[cstmaxpara]用于存放每个输入参数的类型,outputparaenable表示是否包含输出参数,等于0没有返回值,等于1有返回值,outputparatype为返回参数类型,inputparastrlen[cstmaxpara]为函数调用语句输入参数的字符串长度。进一步地,解析执行函数调用语句的方法包括如下步骤:1)解析函数调用语句中的函数名;2)解析funcnametable表中的参数类型与个数;3)解析函数调用语句中的参数并执行。进一步地,解析函数调用语句中的函数名的具体方法为:从函数调用语句字符串中找出函数名,然后在funcnametable中进行匹配,即可找到函数调用语句是要执行那个函数,就找到了函数的应用程序中的函数指针,得到infofunc结构体的id值。进一步地,解析funcnametable表中的参数类型与个数的具体方法为:函数调用语句中的函数名解析完成后,根据funcnametable中函数原型字符串中函数名之前字符串、括号以及参数类型之间的逗号,解析出输入参数类型与个数以及返回值类型,得到infofunc结构体的除id值之外的其他值。进一步地,解析函数调用语句中的参数并执行的具体方法为:分配一块内存用于存储函数参数,先读取输入参数类型,再根据参数类型去进行函数调用语句中参数对应字符串的转换,得到实际的输入参数,然后调用funcnametable的函数指针并执行。本发明所达到的有益效果:本发明提供的函数调试方法,可以在不影响程序功能的前提下进行函数功能的调试,并且无需调试工具的参与。在程序已经执行的时候避免了输出调试信息的方法来进行应用层调试。具体实施方式下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。本发明提供一种在应用中调试嵌入式系统程序中函数功能的方法,包括:在嵌入式系统程序中建立函数指针与函数原型之间的对应表格,并添加函数原型解析函数,使用串口、usb口或者以太网接口接收函数调用字符串并进行解析,然后匹配查找表,查找到需要执行的函数指针,最后跳转去执行函数,并返回执行结果。本发明中,建立函数指针与函数原型之间的对应表格,建立的结构体为:其中func为函数指针,name为函数原型字符串。举例说明,如果需要对max与min两个函数进行调试,则建立如下对应表格;函数名称就是函数指针,再加函数原型字符串添加进来即可。本发明中,解析函数调用语句,建立的结构体为:id用于存放指定解析函数调用语句中函数在funcnametable中的位置,inputparanum用于存放输入参数数量,inputparatype[cstmaxpara]用于存放每个输入参数的类型,outputparaenable表示是否包含输出参数,等于0没有返回值,等于1有返回值,outputparatype为返回参数类型,inputparastrlen[cstmaxpara]为函数调用语句输入参数的字符串长度。本发明中,解析执行函数调用语句的方法包括如下步骤:1)解析函数调用语句中的函数名:从函数调用语句字符串中找出函数名,然后在funcnametable中进行匹配,即可找到函数调用语句是要执行那个函数,就找到了函数的应用程序中的函数指针,得到infofunc结构体的id值。2)解析funcnametable表中的参数类型与个数:函数调用语句中的函数名解析完成后,根据funcnametable中函数原型字符串中函数名之前字符串、括号以及参数类型之间的逗号,解析出输入参数类型与个数以及返回值类型,得到infofunc结构体的除id值之外的其他值。3)解析函数调用语句中的参数并执行:分配一块内存用于存储函数参数,先读取输入参数类型,再根据参数类型去进行函数调用语句中参数对应字符串的转换,得到实际的输入参数,然后调用funcnametable的函数指针并执行。本发明可以广泛用于中小型嵌入式系统中需要进行程序调试的场合,可以在产品不掉电的情况下直接通过通讯口进行程序中具体函数的调试,并且具体函数的调试不会中断产品应用程序的执行,非常适合要求苛刻、应用中不可随意断电的嵌入式系统的工业应用。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1