一种手机软件的调试系统及方法

文档序号:7690401阅读:177来源:国知局
专利名称:一种手机软件的调试系统及方法
技术领域
本发明涉及嵌入式系统软件调试技术,尤其涉及一种手机软件的调试系 纟充及方法。
背景技术
目前在手机软件开发过程中,常用的调试方法主要是使用专用的
TRACE工具进行单步或断点跟踪;或者,在软件程序中加入打印语句(譬 如printf),通过通讯口输出打印语句中的变量,以进行问题分析。
采用上述的第一种调试方法,会有如下缺点
(1) 费用昂贵,如果大规模使用,则会大大增加手机的开发成本;
(2) 操作比较复杂,需要专门的培训;
(3) 对手机硬件设计有一定要求,必须留出JTAG接口。 采用上述的第二种调试方法,会有如下缺点
(1) 大量的打印语句指令的执行会消耗系统的CPU时间;
(2) 需要在程序中加入大量的打印语句代码,降低了程序的健壮性。
如图1所示是传统的手机软件结构框图,底层是由操作系统及平台构
成,上层是由各个应用模块(应用模块1、应用模块2.......应用模块n)
组成,各个应用与操作系统及平台协作完成手机的各种功能,这种手机软件 的构造流程图如图2所示,整个构造流程分为编译源文件、将目标文件链 接为库文件以及将所有库文件及其它目标文件链接为最终的可执行文件三 个过程。图1所示的手机软件在调试过程中只能采用上述的两种方法,效率 非常低。

发明内容
本发明所要解决的技术问题是提供一种手机软件的调试系统及方法,能够通过终端软件直接执行手机中的调试相关函数,以克服现有的调试方法存 在的缺陷和不足。
为了解决上述技术问题,本发明提供了一种手机软件调试系统,包括依
次连接的全局符号表模块、脚本解释及执行模块以及通讯模块;其中
全局符号表模块,用于对手机软件中含有的所有全局符号的全局符号表 源文件进行编译,并将编译产生的全局符号信息进行保存以供脚本解释及执 ^亍模块查询;
通讯模块,用于接收用户从终端输入的命令,并将命令发送到脚本解释 及执行模块,同时将脚本解释及执行模块执行脚本过程中的信息输出到终 端5
脚本解释及执行模块用于通过调用输入函数来轮询用户的输入命令,并
勺目
进一步地,
标文件链接生成的映l象MAP文件中找出的。
进一步地,全局符号表包括手机软件构造过程中生成的静态信息和用户 在调试过程中动态增加的全局函数或全局变量。
进一步地,脚本解释及执行模块以检测到用户输入的结束符作为输入命 令的字符串结束标志。
进一步地,脚本解释及执行模块进一步包括依次连接的执行线程、语法 分析器以及词法分析器,还包括脚本执行模块;其中
执行线程,用于通过不断调用输入函数来轮询;险测用户的输入命令,一 旦检测到结束符后,则将整个输入字符串调用语法分析器接口进行语法分 析,并在语法分析器进行完语法分析后指示脚本执行模块执行脚本;
语法分析器,用于通过调用词法分析器对命令的字符串进行语法分析, 并将分析结果输出给执行线程;
词法分析器用于将命令的字符串识别为多个单标记后输出给语法分析
器;
脚本执行模块与执行线程连接,用于根据执行线程的指示而执行脚本。为了解决上述技术问题,本发明提供了一种手机软件调试方法,该方法 在所述手机软件构造过程中加入全局符号表生成过程,所述全局符号表生成
过程包括将编译生成的各个库文件及部分目标文件《连接为部分映像,同时 导出含有所有符号表信息的映像MAP文件,从该MAP文件中找出所有全 局符号并动态生成全局符号表源文件,编译该全局符号表源文件为目标文件。
进一步地,在全局符号表生成过程前包括步骤将每个源文件编译成目 标文件,以及将部分目标文件链接为库文件;在全局符号表生成过程后包括 步骤将所有库文件以及所有部分目标文件链接为可执行的文件。
进一步地,所有全局符号包括全局变量和全局函数;全局符号表包含在 软件构造过程中生成的静态信息和用户在调试过程中动态增加的信息。
进一步地,本发明的方法还包括调试所述手机软件的过程,即在运行手 机软件时,编写及运行观察全局符号的指令程序。
进一步地,由用户通过终端软件将指令连接到手机,当用户输入指令的 字符串后回车即完成运行。
采用本发明的手机软件的调试系统及方法,由于不再需要昂贵的 TRACE工具,因而能降低开发成本;由于用户只要通过终端连接到手机中, 就能够执行调试相关函数,观察到变量的变化,使用非常方便;另夕卜,不再 需要手机硬件设计时预留JTAG 口 ,而只需要设计普通的USB 口或者UART 口即可。


图l是传统的手机软件结构框图; 图2是传统的手机软件构造流程图; 图3是本发明中的手机软件结构框图3a是本发明中的手机软件结构中的脚本解释及执行模块结构框图;图4是本发明中的手机软件构造流程图。
具体实施例方式
本发明的一种手机软件的调试系统,在传统的手机软件结构中增加了全 局符号表模块、脚本解释及执行模块以及通讯模块;其中,全局符号表模块 用于保存手机软件中所有的全局符号信息,以供其它模块查询;通讯模块用 于接收用户从终端输入的命令,并将命令发送到脚本解释及执行模块,同时 将脚本执行过程中的信息输出到终端软件;脚本解释及执行模块用于通过不 断调用通讯模块的输入函数来轮询用户的输入, 一旦检测到用户输入回车符 后,则将整个输入字符串通过调用语法分析器相关接口进行语法分析,并在 进行完语法分析后执行由输入命令构成的脚本。
由于手机软件属于嵌入式系统软件范畴,构造生成的elf文件需要先转 换为bin文件,然后烧录到闪存FLASH中。由于bin文件并没有包含符号 表,所以本发明在手机软件构造过程中增加了符号表生成过程,用于在软件 构造过程中生成符号表信息。该符号表生成过程如下将编译生成的各个库 文件、对象文件链接为部分映^f象,同时导出MAP文件(该MAP文件包含 了所有的符号表信息)、从MAP文件中找出所有全局符号并动态生成全局 符号表源文件、编译全局符号表源文件,然后链接成最终的手机可执行程序。 这样在最终的手机软件中就包含了全局符号表模块。
下面结合附图和具体实施例对本发明上述技术方案作进一步的详细说明。
如图3所示是本发明的手机软件结构框图,其在传统的手机软件结构 (如图1中所示)中基于操作系统及平台增加了手机调试系统,包括依次连 接的全局符号表模块、脚本解释及执行模块、通讯模块;其中
全局符号表模块用于对手机软件中含有的所有全局符号的全局符号表 源文件(譬如C文件)进行编译,并将编译产生的全局符号信息进行保存, 以供脚本解释及执行模块查询;
该所有全局符号是从通过将所有库文件及未链接为库文件的目标文件 链4妄生成的MAP文件中找出的。全局符号表有两种信息, 一种是软件构造过程中生成的静态信息,如程
序中的全局函数或全局变量;另 一种是用户在调试过程中动态增加的全局函 数或全局变量,如用户输入a二malloc(100)的命令,则符号a加入到全局符号 表中,同时系统自动分配100个字节的内存,并把首地址赋给符号a。
通讯模块用于接收用户(即手机软件的调试者)从终端(即PC机一类 的终端)输入的命令,并将命令发送到脚本解释及执行模块,同时将脚本执 行过程中的信息输出到终端;
脚本解释及执行模块用于通过调用输入函数来轮询用户的输入命令,一 旦^f企测到用户输入的结束符(譬如输入回车符)后,则将整个输入字符串进 行语法分析,并在进行完语法分析后执行由输入命令构成的脚本。
这里,脚本是指调试手机的软件程序(用(:/0++语言语法写成),调试 者一旦输入完脚本且输入回车符后,脚本解释及执行模块就会执行脚本,即 通过对手机软件的调试,察看关键变量的值及当前系统的状态等。
脚本解释及执行模块结构如图3a所示,包括执行线程、语法分析器、 词法分析器以及脚本执行模块;其中 ,
执行线程与语法分析器连接,用于通过不断调用通讯模块的输入函数来 轮询检测用户的输入, 一旦检测到结束符后,则将整个输入字符串调用语法 分析器相关接口进行语法分析,并在语法分析器进行完语法分析后指示脚本 执行模块执行脚本。
语法分析器与词法分析器连接,用于对执行线程轮询检测的用户输入的 字符串进行语法分析,并将分析结果输出给执行线程。
词法分析器用于将用户输入的字符串识别为多个单个标记后输出给语 法分析器;
语法分析器在处理整个字符串时,首先调用词法分析器的接口将字符串 识别为单个标记。为了能够直接与使用<:/0++开发的手机软件结合,本发明 中的语法分析器与词法分析器直接针对C/C十+的语法、词法进行分析,并将 语法、词法分析结果告知执行线程。
脚本执行模块与执行线程连接,用于根据执行线程的指示而执行脚本。如图4所示是本发明的手机软件构造流程图,该流程包括如下步骤步骤401:将每一个c文件编译为目标文件;步骤402:将部分目标文件链接为库文件;
步骤403:将所有库文件及未链接为库文件的目标文件链接为部分映像MAP文件,并将MAP文件导出;
步骤404:从MAP文件中找出所有的全局符号,包括全局变量和全局函数,动态生成全局符号表C文件;
步骤405:将全局符号表C文件编译为目标文件;
步骤406:将所有库文件和未链接为库文件的目标文件链接为可执行文件,结束流程。
上述流程是在传统的手机软件构造流程中增加了全局符号表生成过程,具体由上述步骤403至步骤405构成。这样最终的手机软件中,就生成了用于调试手机软件的全局符号表模块。
下面给出使用本发明进行调试的一个步骤
假设手机软件中有一全局变量int g—iSendCount,在程序的多处都对这一全局变量有更新动作,现在需要观察这一全局变量的值是否为预想的值,则需要在程序中写一功能类似如下的函数,以将全局变量列印出来。
void sendcountdump()
printf("g—iSendCount = %d\n", g—iSendCount);
当程序被执行时,用户通过终端软件(即PC机上带的普通串口通讯软件)连接到手机,输入字符串sendcountdump后回车,就能够观察到g—iSendCount全局变量的值。本发明的调试系统增加的模块相对独立,与各应用模块没有直接的接 口,只与操作系统及平台有少量的接口。为了不影响最后的版本发布,本发 明在具体实施时采用条件编译的方法,在开发调试过程中可以加入本发明的
模块以及在构建过程中增加本发明的符号表生成过程;在版本对外发布时, 可以方便地去掉本发明的模块与构建过程,以达到节约存储器资源的目的。
本发明经过在手机软件调试中的实际使用,效果良好。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的 形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种手机软件调试系统,包括依次连接的全局符号表模块、脚本解释及执行模块以及通讯模块;其中所述全局符号表模块,用于对手机软件中含有的所有全局符号的全局符号表源文件进行编译,并将编译产生的全局符号信息进行保存以供所述脚本解释及执行模块查询;所述通讯模块,用于接收用户从终端输入的命令,并将所述命令发送到所述脚本解释及执行模块,同时将所述脚本解释及执行模块执行脚本过程中的信息输出到所述终端;所述脚本解释及执行模块用于通过调用输入函数来轮询所述用户的所述输入命令,并在对所述输入命令进行语法分析后执行由所述输入命令构成的所述脚本。
2、 按照权利要求1所述的系统,其特征在于,所述所有全局符号是从 通过将所有库文件及未链接为库文件的目标文件链接生成的映像MAP文件 中找出的。
3、 按照权利要求1所述的系统,其特征在于,所述全局符号表包括所 述手机软件构造过程中生成的静态信息和所述用户在调试过程中动态增加 的全局函数或全局变量。
4、 按照权利要求1所述的系统,其特征在于,所述脚本解释及执行模 块以检测到所述用户输入的结束符作为所述输入命令的字符串结束标志。
5、 按照权利要求1至4任一项所述的系统,其特征在于,所述脚本解 释及执行模块进一步包括依次连接的执行线程、语法分析器以及词法分析 器,还包括脚本执行模块;其中所述执行线程,用于通过不断调用所述输入函数来轮询检测所述用户的 输入命令, 一旦检测到结束符后,则将整个输入字符串调用所述语法分析器 接口进行语法分析,并在语法分析器进行完语法分析后指示所述脚本执行模块执行所述脚本;所述语法分析器,用于通过调用所述词法分析器对所述命令的字符串进行语法分析,并将分析结果输出给执行线程;所述词法分析器用于将所述命令的字符串识别为多个单标记后输出给语法分析器;所述脚本执行模块与执行线程连接,用于根据执行线程的指示而执行所 述脚本。
6、 一种手机软件调试方法,其特征在于,所述方法在所述手机软件构 造过程中加入全局符号表生成过程,所述全局符号表生成过程包括将编译 生成的各个库文件及部分目标文件链接为部分映像,同时导出含有所有符号 表信息的映像MAP文件,从所述MAP文件中找出所有全局符号并动态生 成全局符号表源文件,编译所述全局符号表源文件为目标文件。
7、 按照权利要求6所述的方法,其特征在于,在所述全局符号表生成 过程前包括步骤将每个源文件编译成所述目标文件,以及将部分所述目标 文件链接为所述库文件;在所述全局符号表生成过程后包括步骤将所有所 述库文件以及所有所述部分目标文件链接为可执行的文件。
8、 按照权利要求6或7所述的方法,其特征在于,所述所有全局符号 包括全局变量和全局函数;所述全局符号表包含在软件构造过程中生成的静 态信息和用户在调试过程中动态增加的信息。
9、 按照权利要求8所述的方法,其特征在于,所述方法还包括调试所 述手机软件的过程,即在运行所述手机软件时,编写及运行观察所述全局符 号的指令程序。
10、 按照权利要求9所述的方法,其特征在于,由用户通过终端软件将 所述指令连接到所述手机,当所述用户输入所述指令的字符串后回车即完成 所述运行。
全文摘要
一种手机软件调试系统,包括依次连接的全局符号表模块、脚本解释及执行模块以及通讯模块;其中全局符号表模块对手机软件中含有的所有全局符号的全局符号表源文件进行编译,并将编译产生的全局符号信息进行保存以供脚本解释及执行模块查询;通讯模块接收用户从终端输入的命令,并将命令发送到脚本解释及执行模块,同时将脚本解释及执行模块执行脚本过程中的信息输出到终端;脚本解释及执行模块用于通过调用输入函数来轮询用户的输入命令,并在对输入命令进行语法分析后执行由其构成的脚本。本发明能降低开发成本,使用方便,且只需设计普通的USB口或UART口即可。
文档编号H04M1/725GK101546288SQ20081008752
公开日2009年9月30日 申请日期2008年3月25日 优先权日2008年3月25日
发明者郭素光 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1