CN101256532A - 一种嵌入式系统中变量实时查看的方法 - Google Patents
一种嵌入式系统中变量实时查看的方法 Download PDFInfo
- Publication number
- CN101256532A CN101256532A CNA200810066476XA CN200810066476A CN101256532A CN 101256532 A CN101256532 A CN 101256532A CN A200810066476X A CNA200810066476X A CN A200810066476XA CN 200810066476 A CN200810066476 A CN 200810066476A CN 101256532 A CN101256532 A CN 101256532A
- Authority
- CN
- China
- Prior art keywords
- variable
- information
- foreground
- enquiry
- embedded system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式系统中变量实时查看的方法,用于一通用嵌入式硬件系统,并由前台服务和后台查询支持两部分构成;并包括以下步骤:从嵌入式系统的目标代码中提取变量和类型的定义信息;解析这些信息生成结构文件,用于描述变量的结构;所述后台查询支持程序利用该结构文件向前台发起查询;所述前台服务接收查询信息,并返回相应内存区域的内容给所述后台查询支持程序。本发明方法由于采用了前后台分开的查询并且根据类型定义状态变迁的查看方式,结合查询代理程序方便地查看正在运行的基站软件内存中变量信息,以辅助系统状态分析,其分析解决问题的效率大大提高。
Description
技术领域
本发明涉及一种嵌入式系统的数据处理方法,尤其涉及的是一种适用于基于ELF格式(Executable and Linking Format)的嵌入式系统目标代码中系统变量实时查看方法。
背景技术
现有技术的嵌入式系统,特别是大型嵌入式系统都有大量的变量,这些变量的状态决定了系统的运行状态,工程师可以根据可定位变量的值来确定系统的运行状态及故障。
传统查看变量的方法有:
1、在编写代码的时候人为地加入一些打印信息,人为打出需要察看的变量的值,这种方法要求程序编写者预先判断哪些变量是需要打印的,工作量大且没有针对性。
2、实验室通过调试器的接入进行察看,这种方法只能在实验室调试版本中进行,在发行版本根本无法实施。
3、在分析某些系统故障的过程中,需要确切知道系统的变量空间大小,现有方法是通过在程序中使用sizeof()函数求出后打印出来,该方法不适用于对任意变量大小的查看。
4、在某些消息或者内存段是某个复杂结构体的时候,如何对这些Buff进行格式化显示目前尚没有工具做到。
在设备出现不良运行状态时,通常需要工程师现场定位并快速解决问题,而定位工程师往往需要查看系统的运行状态,这时就需要能够定位内存中变量的实时值,而在现有技术的传统方法中无法满足这种要求,以致工程师解决问题的过程烦琐且耗费时间。
因此,现有技术还有待于改进和发展。
发明内容
本发明的目的在于提供一种嵌入式系统中变量实时查看的方法,针对现有技术的上述缺陷,而提供一种能够定位和查询内存中变量实时值的方法。
本发明的技术方案包括:
一种嵌入式系统中变量实时查看的方法,用于一通用嵌入式硬件系统,并由前台服务和后台查询支持两部分构成;并包括以下步骤:
A、从嵌入式系统的目标代码中提取变量和类型的定义信息;
B、解析这些信息生成结构文件,用于描述变量的结构;
C、所述后台查询支持程序利用该结构文件向前台发起查询;
D、所述前台服务接收查询信息,并返回相应内存区域的内容给所述后台查询支持程序。
所述的方法,其中,还包括步骤:
E、所述后台查询支持程序解释所述前台服务返回的内容,并显示给用户。
所述的方法,其中,所述步骤A还包括:
分析目标文件的结构,提取其中的STABS节区信息,并从该节区信息中分析出变量和类型定义信息。
所述的方法,其中,所述步骤B还包括:
对变量及类型定义信息进行解析,生成可一次解析的变量及类型定义的树形结构。
所述的方法,其中,所述步骤C还包括:所述后台查询支持程序还显示所述结构文件。
所述的方法,其中,所述步骤C还包括:所述后台查询支持程序利用结构文件解析出对应变量的地址及大小后,向所述前台服务发送查询通知。
本发明所提供的一种嵌入式系统中变量实时查看的方法,由于采用了前后台分开的查询并且根据类型定义状态变迁的查看方式,结合查询代理程序方便地查看正在运行的基站软件内存中变量信息,以辅助系统状态分析,其分析解决问题的效率大大提高。
附图说明
图1a和图1b分别是本发明方法的前、后台查询流程示意图;
图2是本发明方法的类型定义状态变迁图表。
具体实施方式
下面结合附图,将对本发明的各较佳实施例进行更为详细的描述。
本发明的嵌入式系统中变量实时查看的方法,如图1a和图1b所示,由前台服务和后台查询支持两部分构成,其结合一通用嵌入式硬件系统工作,基本的步骤过程包括:
A、从嵌入式系统的目标代码中提取变量和类型的定义信息:分析目标文件结构,提取其中的STABS节区信息(调试信息格式),并从该节区信息中分析出变量和类型定义信息。
B、解析这些信息生成结构文件,在结构文件中描述了变量的结构:采用本发明中提出的词法和文法,结合编译原理方法对变量及类型定义信息进行解析,生成简单的可一次解析的变量及类型定义的树形结构。
C、后台查询支持程序利用该结构文件,进行显示并向前台发起查询:后台查询支持程序利用结构文件将解析内容以树形结构显示给用户,用户提交需要查询的变量,后台解析出其地址及大小后,向前台发送查询通知。
D、前台在接收到查询信息后返回相应内存区域的内容给后台:前台在接收到查询通知后,根据所述结构文件以及解析出的内容,包括地址,将对应内存区域的内容发送到后台。
E、后台解释前台返回的查询内容,并显示给用户查看,即可完成对嵌入式系统中变量的实时查看过程。
以下结合实例和前、后台查询流程图具体说明其查询过程:
假设有如下结构体定义:
struct TTest
{
int var1;
int var2;
};
对于上述结构体定义变量:struct TTest tTest;
为实现测试,在进行查询前将其第一个分量var1置为2,第二个分量var2置为5。
通过文法解析知道tTest的类型标志(0,20),该变量存在。接下来解析其结构信息,具体详细步骤请见下文说明。
TTest:T(0,20)=s8var1:(0,1),0,32;var2:(0,1),32,32;;
由此得知tTest为结构体,结构体名为TTest,该结构体大小为8字节,第一个分量地址偏移为0,大小为32位,第二个分量地址偏移为32,大小为32位。获取tTest地址为0x7ff567。
然后,向前台发送tTest变量查询信息,该信息包含地址0x7ff567及变量长度8,并进入等待接收查询结果的状态。
前台在收到该地址和长度之后,将按照指定地址开始相应长度的内存拷贝,并将查询结果发送给后台。
后台在收到查询结果后,按上述解析结果将结构体tTest显示给用户,第一个分量var1值为2,第二个分量var2值为5。
以下说明具体的调试信息解析过程:
从嵌入式系统生成的目标文件中提取对应类型定义结构信息:
TTest:T(0,20)=s8var1:(0,1),0,32;var2:(0,1),32,32;;
结合图2所示,解释识别上述信息的过程:
1)、由S1识别名称“TTest”:S1的状态升迁过程包括S10、S11、S12、S13、S14,并且根据S11、S12和S13之间的编号条件,如S1下的表格所列示,在对上述结构信息识别的过程中,可以根据编号1、2、3的条件进行识别,得到结构名称“TTest”;
同理,S2的状态机包括了S21;S3的状态机包括了S30、S31、S32、S33、S34、S35;S4的状态机包括了S40、S41、S42、S43;S5的状态机包括了S51;S6的状态机包括了S60、S61、S62、S63;S7的状态机包括了S70、S71、S72、S73、S74、S75;S8的状态机包括了S80、S81、S82、S83;整个识别过程为从S1到S8依次执行。
2)、由S2识别该信息为新类型定义标志为“T”;
3)、由S3识别新类型TTest的编号“(0,20)”;
4)、由S4、S5识别该新类型为结构体“=s”;
5)、由S6识别出该类型大小“8”;
6)、由S7识别出该类型分量一“var1:(0,1),0,32;”;
7)、由S7识别出该类型分量二“var2:(0,1),32,32;”;
8)、由S8识别出该句子结束。
上述识别过程的一个整体体现在图2中。
结合上述各部分局部识别过程,提取出词法定义如下:
NAME ::=[a-zA-Z_]([a-zA-Z0-9_]*):|:
TYPETYPE ::=[Tt]/(\()
PAIR ::=\((0|([1-9]([0-9]*))),(0|([1-9]([0-9]*)))\)
SUTYPESTART ::==s[1-9]([0-9]*)|=u[1-9]([0-9]*)
从图2总结出识别结构体的文法如下:
subtail =SUBTAIL
|subtail SUBTAIL
structdefiniton=NAME TYPETYPE PAIR EQUEAL TYPE SIZE subtail
END
以上介绍了一条简单的词法和文法构造,经过对C语言各种数据结构的综合分析后,本发明方法定义识别变量和类型定义的词法,略举部分如下:
NAME ::=[a-zA-Z_]([a-zA-Z0-9_]*):|:
TYPETYPE ::=[Tt]/(\()
VARTYPE ::=[SGV]/(\()
PAIR ::=\((0|([1-9]([0-9]*))),(0|([1-9]([0-9]*)))\)
...
文法:
basetypdefdefinition::=commonclassdefinition BASETYPE
commonvardefinition::=NAME VARTYPE PAIR
|NAME PAIR
compositionvardefinition::=commonvardefinition classtaildefinition
commonclassdefinition ::=NAME TYPETYPE PAIR
|NAME TYPETYPE PAIR
FUNTYPESTART
|commonclassdefinition NAME
|commonclassdefinition PAIR
...
本发明所提供的嵌入式系统中变量实时查看的方法,由于采用了前、后台分开的查询并且根据类型定义状态变迁的查看方式,能够快速有效地解析目标文件中的变量结构定义及变量定义信息,分析变量大小,指定内存的结构体,结合查询代理程序方便地查看正在运行的基站软件内存中变量信息,以辅助系统状态分析,其实现简单,且分析解决问题的效率大大提高。
应当理解的是,上述针对本发明较佳实施例的描述较为详细,但并不能因此而认为是对本发明专利保护范围的限制,本发明专利保护范围应以所附权利要求为准。
Claims (6)
1、一种嵌入式系统中变量实时查看的方法,用于一通用嵌入式硬件系统,并由前台服务和后台查询支持两部分构成;并包括以下步骤:
A、从嵌入式系统的目标代码中提取变量和类型的定义信息;
B、解析这些信息生成结构文件,用于描述变量的结构;
C、所述后台查询支持程序利用该结构文件向前台发起查询;
D、所述前台服务接收查询信息,并返回相应内存区域的内容给所述后台查询支持程序。
2、根据权利要求1所述的方法,其特征在于,还包括步骤:
E、所述后台查询支持程序解释所述前台服务返回的内容,并显示给用户。
3、根据权利要求1所述的方法,其特征在于,所述步骤A还包括:
分析目标文件的结构,提取其中的STABS节区信息,并从该节区信息中分析出变量和类型定义信息。
4、根据权利要求1所述的方法,其特征在于,所述步骤B还包括:
对变量及类型定义信息进行解析,生成可一次解析的变量及类型定义的树形结构。
5、根据权利要求1所述的方法,其特征在于,所述步骤C还包括:所述后台查询支持程序还显示所述结构文件。
6、根据权利要求1所述的方法,其特征在于,所述步骤C还包括:所述后台查询支持程序利用结构文件解析出对应变量的地址及大小后,向所述前台服务发送查询通知。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200810066476XA CN101256532A (zh) | 2008-04-07 | 2008-04-07 | 一种嵌入式系统中变量实时查看的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200810066476XA CN101256532A (zh) | 2008-04-07 | 2008-04-07 | 一种嵌入式系统中变量实时查看的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101256532A true CN101256532A (zh) | 2008-09-03 |
Family
ID=39891372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200810066476XA Pending CN101256532A (zh) | 2008-04-07 | 2008-04-07 | 一种嵌入式系统中变量实时查看的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101256532A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751321B (zh) * | 2008-12-18 | 2012-07-18 | 中兴通讯股份有限公司 | 一种动态可视化查看变量的实现方法及系统 |
CN102880468A (zh) * | 2012-09-12 | 2013-01-16 | 浙江大学 | 一种用于ecu程序开发的代码智能提示方法及其系统 |
CN109460255A (zh) * | 2018-11-13 | 2019-03-12 | 北京奇虎科技有限公司 | 内存地址的查询方法及装置 |
CN109683900A (zh) * | 2018-11-14 | 2019-04-26 | 浙江零跑科技有限公司 | 针对elf文件调试信息的通用上位机符号查找与解析方法 |
-
2008
- 2008-04-07 CN CNA200810066476XA patent/CN101256532A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751321B (zh) * | 2008-12-18 | 2012-07-18 | 中兴通讯股份有限公司 | 一种动态可视化查看变量的实现方法及系统 |
CN102880468A (zh) * | 2012-09-12 | 2013-01-16 | 浙江大学 | 一种用于ecu程序开发的代码智能提示方法及其系统 |
CN102880468B (zh) * | 2012-09-12 | 2015-07-08 | 浙江大学 | 一种用于ecu程序开发的代码智能提示方法及其系统 |
CN109460255A (zh) * | 2018-11-13 | 2019-03-12 | 北京奇虎科技有限公司 | 内存地址的查询方法及装置 |
CN109460255B (zh) * | 2018-11-13 | 2022-12-02 | 北京奇虎科技有限公司 | 内存地址的查询方法及装置 |
CN109683900A (zh) * | 2018-11-14 | 2019-04-26 | 浙江零跑科技有限公司 | 针对elf文件调试信息的通用上位机符号查找与解析方法 |
CN109683900B (zh) * | 2018-11-14 | 2022-02-18 | 浙江零跑科技股份有限公司 | 针对elf文件调试信息的通用上位机符号查找与解析方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110333863B (zh) | 一种生成、显示小程序页面的方法及装置 | |
CN103218294B (zh) | 一种嵌入式系统的调试方法、调试转换装置和系统 | |
JP5208635B2 (ja) | プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム | |
GB2360609A (en) | Dynamically generating expanded user messages in a computer system | |
CN106547782B (zh) | 日志信息的获取方法及装置 | |
CN113553064B (zh) | 一种web前端代码转换方法 | |
CN101140590A (zh) | 资源文件的校验方法和系统 | |
CN101256532A (zh) | 一种嵌入式系统中变量实时查看的方法 | |
CN111190807A (zh) | 一种埋点测试方法及设备 | |
US20060041873A1 (en) | Computer system and method for verifying functional equivalence | |
CN110543427A (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN111580821B (zh) | 脚本绑定方法、装置、电子设备及计算机可读存储介质 | |
CN114035789A (zh) | 日志解析模板的生成方法、日志解析方法、装置及设备 | |
CN112286784A (zh) | 一种测试用例生成方法、装置、服务器及存储介质 | |
CN113806321A (zh) | 一种日志处理方法及系统 | |
JP2010140407A (ja) | ソースコード検査装置 | |
US20040010780A1 (en) | Method and apparatus for approximate generation of source code cross-reference information | |
CN103559127A (zh) | 一种缺陷处理方法及缺陷处理器 | |
CN107203405A (zh) | 一种检查多语言定义的方法和装置 | |
EP2535813B1 (en) | Method and device for generating an alert during an analysis of performance of a computer application | |
CN112685072B (zh) | 通信地址知识库的生成方法、装置、设备及存储介质 | |
CN116028340A (zh) | 文件生成方法及装置 | |
CN108038248B (zh) | Etl依赖自动识别方法与系统 | |
CN101751321B (zh) | 一种动态可视化查看变量的实现方法及系统 | |
CN113886132B (zh) | web端错误智能修复方法、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080903 |