CN100511177C - 一种嵌入式系统的符号定位方法 - Google Patents

一种嵌入式系统的符号定位方法 Download PDF

Info

Publication number
CN100511177C
CN100511177C CNB2006101382193A CN200610138219A CN100511177C CN 100511177 C CN100511177 C CN 100511177C CN B2006101382193 A CNB2006101382193 A CN B2006101382193A CN 200610138219 A CN200610138219 A CN 200610138219A CN 100511177 C CN100511177 C CN 100511177C
Authority
CN
China
Prior art keywords
version
file
symbol
denotation
type
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.)
Active
Application number
CNB2006101382193A
Other languages
English (en)
Other versions
CN101178684A (zh
Inventor
李巍
黄海伦
李小伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Shanghai Electric Power Co Ltd
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CNB2006101382193A priority Critical patent/CN100511177C/zh
Publication of CN101178684A publication Critical patent/CN101178684A/zh
Application granted granted Critical
Publication of CN100511177C publication Critical patent/CN100511177C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种嵌入式系统的符号定位方法,包括:(1)生成调试版本的符号表信息文件和符号类型信息文件、以及发布版本的符号表信息文件(2)以符号名称作为关键字生成调试版本和发布版本的符号类型信息数据库;(3)根据符号名称查询符号类型信息数据库,将类型结构分解,得到符号在目标机中的物理位置。本发明适用于对各种嵌入式软件版本实现在目标机端的符号定位,为嵌入式应用系统的发布提供了灵活的选择空间。使用该发明不仅可以查询和修改全局变量,而且能够查询和修改结构、类、函数、局部变量等信息,从而为嵌入式应用系统提供丰富的故障定位辅助方法。本发明不受任何编译器、调试器、操作系统的限制。

Description

一种嵌入式系统的符号定位方法
技术领域
本发明涉及嵌入式系统,特别涉及嵌入式系统的符号定位。
背景技术
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及嵌入式应用程序等四大部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统开发不同于通用的基于桌面机的程序开发。由于桌面机拥有丰富的计算、存储和外设资源,因此程序开发、调试、测试都是在同一台电脑上进行的;但对于嵌入式系统来说,由于系统的计算、存储和外设资源是专门根据应用需求定制,因此用于程序开发、调试、测试的资源非常有限,业界普遍采取主机/目标机的方式进行——在桌面机上进行程序开发和测试,在桌面机和嵌入式系统之间建立通信通道,进行远程调试。
当嵌入式软件在程序调试阶段中发生故障的时候,开发人员可以方便地通过功能强大的调试器准确定位故障,及时修复程序中的缺陷。但是,当嵌入式软件在程序发布之后发生了故障,工程人员就难以用现有的工具来定位故障。原因是在程序调试阶段运行的嵌入式软件中包含了丰富的调试信息,可用于支持远程调试器从目标机上获取嵌入式软件的运行期信息;而出于效率和节省存储资源的考虑,在程序发布之后运行的嵌入式软件已经将调试信息去掉,不能支持远程调试器的工作,导致无法有效地进行故障定位。
有的嵌入式应用系统为了能够在程序发布之后仍然能够方便地进行故障定位,在发布版本中加入了调试信息,但付出了时间和空间的代价。而有的嵌入式应用系统针对这种问题提出了解决方案:在程序发布阶段去掉了调试信息,同时输出发布版本的符号表信息文件(如MAP文件),开发出主机端的工具分析出符号表信息文件中符号和内存地址的对应关系,并通过运行于主机端和目标机端的调试代理建立通信通道,当嵌入式应用软件发生故障的时候,通过符号和内存地址的对应关系简单地查看和修改嵌入式系统中的全局变量。这类方法确实为不带调试信息的嵌入式软件的故障定位提供了一种比较有效的手段,但故障定位往往需要获取类、结构、函数调用栈、函数局部变量等信息,才能更为准确地定位故障,对于这些信息的获取,上述方法就无能为力了。
发明内容
针对以上不足,本发明提出一种新的嵌入式系统的符号定位方法。该方法适用于带有或不带有调试信息的嵌入式软件版本,不仅能提供查看和修改全局变量的功能,还提供了获取和修改类、结构、函数调用栈、函数局部变量等信息的功能,从而为嵌入式系统故障定位提供一种强有力的辅助手段。
本发明采用的技术方案是:
一种嵌入式系统的符号定位方法,其特征在于,所述方法包括:
(1):针对嵌入式应用软件的调试版本,生成调试版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;然后生成调试版本的符号类型信息文件,此文件包含了程序中所有符号的名称、类型以及逻辑存储布局信息;
针对嵌入式应用软件的发布版本,生成发布版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;
(2):从调试版本的符号表信息文件获取符号名称、物理存储地址信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成调试版本的符号类型信息数据库;
从发布版本的符号表信息文件获取符号名称、物理存储地址信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成发布版本的符号类型信息数据库;
(3):建立起主机端和目标机端之间的通信通道;根据目标机端的嵌入式应用系统的运行版本,以及需要查看或者修改的符号名称,查询相应运行版本的符号类型信息数据库,获得所述符号的物理存储地址和类型长度信息,从而获取所述符号在目标机端的物理位置。
进一步地,所述符号包括全局符号和静态符号。
进一步地,所述符号至少包括结构、类、函数调用栈、局部变量和全局变量。
进一步地,所述调试版本带有调试信息,发布版本不带有调试信息。
进一步地,所述符号表信息文件为MAP文件。
进一步地,步骤(1)前还存在步骤(0):在编译嵌入式应用软件的目标代码过程中,分别生成调试版本和发布版本。
进一步地,当查询符号数值时,在所述步骤(3)后还存在:
(4):通过调试代理从目标机端查询内存数据并返回到主机端;主机端根据相应符号在相应运行版本的符号类型信息数据库中的逻辑存储布局,将查询返回的内存数据按照对应的逻辑存储布局进行数据解析,得到相应数值。
本发明的技术方案适用于对带有或不带有调试信息的嵌入式软件版本实现在目标机端的符号定位,为嵌入式应用系统的发布提供了灵活的选择空间。使用该发明不仅可以查询和修改全局变量,而且能够详细地查询和修改结构、类、函数、局部变量等信息,从而为嵌入式应用系统提供更为丰富的故障定位辅助方法。本发明的技术方案不受任何编译器、调试器、操作系统的限制,可以应用在运行各种不同操作系统的嵌入式系统,具有广泛的应用范围。
附图说明
图1是实施例1中查询符号数值的工作流程图;
图2实施例代码片断示意图;
图3符号表信息文件片断示意图;
图4符号类型信息文件片断示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图以及例子来详细解析本发明的实施步骤。
实施例1,在pSOS嵌入式实时操作系统环境下实施,首先编写测试例子代码,如图2所示,设计一个简单的测试类MyTestClass,该类有一个私有整型变量i,一个构造函数和一个析构函数,以及一个用来设置变量i的公有成员函数SetI;定义一个全局对象实例g_mytest,在主函数中调用测试函数test,将私有变量i的值设置为0xfeedfeed;然后使用基于本发明的技术方案所开发的故障诊断工具查看g_mytest的数据,检验全局对象g_mytest数据的正确性,同时可以查看root任务的函数堆栈,检验函数、局部变量、任务调用栈的正确性,具体实施步骤如下,参见图1:
101:在pSOS集成开发环境下,使用diab编译器分别编译出测试代码的调试版本和发布版本——使用编译选项-g可以编译出带有调试信息的调试版本debug.elf,而去掉选项-g并增加优化选项-O2可以生成不带调试信息的发布版本release.elf。
102:为调试版本生成符号表信息文件,比如MAP文件,和符号类型信息文件;为发布版本生成符号表信息文件。由于调试版本中包含的调试信息遵循一定业界标准,所以可以通过多种方法获取符号表信息和符号类型信息,下面列举其中一种方法:使用pSOS集成开发环境下的调试信息提取工具ddump,执行命令ddump-Nx debug.elf>symbol_debug.txt,为调试版本生成符号表信息文件,参见图3的符号表信息文件片断示意图;执行命令ddump-D debug.elf>typeinfo.txt,为调试版本和发布版本生成符号类型信息文件,参见图4的符号类型信息文件片断示意图;执行命令ddump-Nx release.elf>symbol_release.txt,为发布版本生成符号表信息文件。
103:在符号名称、物理存储地质、类型、逻辑存储布局等信息间建立起关联关系,生成符号类型信息数据库。可以通过多种方式根据第二步产生的符号表信息文件和符号类型信息文件生成符号类型信息数据库,下面列举其中一种方法:通过对符号信息文件的分析,将物理存储地址301、类型长度302以及符号名称303信息提取出来,按照一定格式存放到一个临时文件temp1.dat中。同时分析符号类型信息文件,参见图4,全局对象名称为401所示的“g_mytest”,通过代码411的引用,可以找到该全局对象对应的类型,类型名称为402所示的“MyTestClass”,该类型的第一个成员是403所示的变量“i”,其逻辑存储位置是MyTestClass类型起始偏移位置0,那么可以推算出变量“i”的物理存储地址是g_mytest的物理存储地址+偏移0,MyTestClass类型的第二个成员变量可以通过代码412的引用来搜索,如此类推,可以分析出MyTestClass类型的逻辑存储布局,按照一定格式将提取到的信息存放到一个临时文件temp2.dat中。对于函数类型的分析,这里以MyTestClass类型的公有成员函数SetI为例,404所示的是函数名称,该函数的代码段地址范围从AT_low_pc到AT_high_pc所指示的地址,405所示的是函数的第一个参数,参数名是“this”,改参数存储在421所示的R3寄存器中,同样,406所示的参数“value”存储在422所示的R4寄存器当中,这样就可以将所提取出来的信息暂时存放在临时文件temp2.dat中。然后,以符号名称为关键字,在temp1.dat和temp2.dat之间建立关系,生成符号类型信息数据库,提供给故障诊断工具查询使用。
104:当测试程序的发布版本下载到目标机运行起来之后,通过网络将主机端的故障诊断工具连接上目标机,使主机端和目标机端的调试代理建立起通信通道,就可以使用故障诊断工具查看或修改测试对象的数据。将需要查询的全局符号名称g_mytest输入到主机端的故障诊断工具中,工具以符号名称g_mytest为关键字查询符号类型信息数据库,获取该符号的物理存储地址和类型长度,构造一条全局符号查询请求消息,通过调试代理下发到目标机,目标机端的调试代理提取出请求消息的物理存储地址address和长度length两个参数,并激活查询任务,将address开始的长度为length的内存数据拷贝下来,并通过调试代理发送到主机端;主机端的故障诊断工具接收到查询结果后,查询符号类型信息数据库获取g_mytest类型的逻辑存储布局,解析查询返回的内存数据,然后显示到用户界面上。接着检验函数、局部变量、任务调用栈的正确性,将root任务的名称输入到主机端的故障诊断工具中,工具构造一条堆栈查询请求消息,通过调试代理下发到目标机,目标机端的调试代理激活查询任务,将root任务栈数据返回到主机端,主机端的故障诊断工具通过分析堆栈结构,提取出堆栈中函数调用链的地址列表,以这个地址列表中的每一个地址作为关键字,查询符号类型数据库中的函数地址范围信息,每成功匹配一次,则输出该地址范围所对应的函数名称,并根据符号类型数据库中该函数所对应的局部变量的逻辑存储布局,解析堆栈中的数据,输出局部变量的值,如此类推,可以输出root任务的整个函数调用链以及每个函数的参数和局部变量的值。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰应视为本发明的保护范围。

Claims (7)

1.一种嵌入式系统的符号定位方法,其特征在于,所述方法包括:
(1):针对嵌入式应用软件的调试版本,生成调试版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;然后生成调试版本的符号类型信息文件,此文件包含了程序中所有符号的名称、类型以及逻辑存储布局信息;
针对嵌入式应用软件的发布版本,生成发布版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;
(2):从调试版本的符号表信息文件获取符号名称、物理存储地址信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成调试版本的符号类型信息数据库;
从发布版本的符号表信息文件获取符号名称、物理存储地址信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成发布版本的符号类型信息数据库;
(3):建立起主机端和目标机端之间的通信通道;根据目标机端的嵌入式应用系统的运行版本,以及需要查看或者修改的符号名称,查询相应运行版本的符号类型信息数据库,获得所述符号的物理存储地址和类型长度信息,从而获取所述符号在目标机端的物理位置。
2.如权利要求1所述的方法,其特征在于:所述符号包括全局符号和静态符号。
3.如权利要求1所述的方法,其特征在于:所述符号至少包括结构、类、函数调用栈、局部变量和全局变量。
4.如权利要求1、2或3所述的方法,其特征在于:所述调试版本带有调试信息,发布版本不带有调试信息。
5.如权利要求4所述的方法,其特征在于:所述符号表信息文件为MAP文件。
6.如权利要求1、2、3或5所述的方法,其特征在于,步骤(1)前还存在步骤(0):在编译嵌入式应用软件的目标代码过程中,分别生成调试版本和发布版本。
7.如权利要求1所述的方法,其特征在于,当查询符号数值时,在所述步骤(3)后还存在:
(4):通过调试代理从目标机端查询内存数据并返回到主机端;主机端根据相应符号在相应运行版本的符号类型信息数据库中的逻辑存储布局,将查询返回的内存数据按照对应的逻辑存储布局进行数据解析,得到相应数值。
CNB2006101382193A 2006-11-06 2006-11-06 一种嵌入式系统的符号定位方法 Active CN100511177C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101382193A CN100511177C (zh) 2006-11-06 2006-11-06 一种嵌入式系统的符号定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101382193A CN100511177C (zh) 2006-11-06 2006-11-06 一种嵌入式系统的符号定位方法

Publications (2)

Publication Number Publication Date
CN101178684A CN101178684A (zh) 2008-05-14
CN100511177C true CN100511177C (zh) 2009-07-08

Family

ID=39404944

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101382193A Active CN100511177C (zh) 2006-11-06 2006-11-06 一种嵌入式系统的符号定位方法

Country Status (1)

Country Link
CN (1) CN100511177C (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135935A (zh) * 2010-01-22 2011-07-27 华为技术有限公司 软件优化、调试的方法及装置
US8244698B2 (en) * 2010-07-23 2012-08-14 Google Inc. Encoding a schema version in table names
CN103425565B (zh) * 2012-05-16 2016-01-06 腾讯科技(深圳)有限公司 获取程序运行信息的方法及系统
CN104461806A (zh) * 2013-09-16 2015-03-25 中兴通讯股份有限公司 一种数据断点监控方法、装置及调试器
CN103559123B (zh) * 2013-10-24 2016-02-10 烽火通信科技股份有限公司 基于VxWorks操作系统的函数调用栈分析方法及装置
CN104636261A (zh) * 2013-11-07 2015-05-20 中国空间技术研究院 主测试处理机及其动态遥控指令管理方法
CN103678127B (zh) * 2013-12-16 2016-10-05 中国电子科技集团公司第四十一研究所 一种嵌入式仪器软件的故障定位及分析方法
CN103677851B (zh) * 2013-12-27 2016-07-27 瑞斯康达科技发展股份有限公司 一种生成嵌入式程序运行符号表的方法和装置
CN104679660A (zh) * 2015-03-26 2015-06-03 成都彬鸿科技有限公司 基于符号表的嵌入式系统调试方法和装置
CN104899070B (zh) * 2015-05-19 2018-11-02 京信通信系统(中国)有限公司 设备命令行的实现方法、系统与装置
US10055533B2 (en) * 2015-05-19 2018-08-21 Mentor Graphics Corporation Visualization of analysis process parameters for layout-based checks
CN105138453B (zh) * 2015-08-12 2018-08-14 杭州数梦工场科技有限公司 一种程序调试方法和装置
CN107092554B (zh) * 2016-02-18 2021-03-02 阿里巴巴集团控股有限公司 一种应用程序的故障代码确认方法及装置
CN107632819B (zh) * 2016-07-14 2021-02-09 南京南瑞继保电气有限公司 一种基于符号表的可编程逻辑调试的方法和系统
CN108614764B (zh) * 2016-12-12 2021-09-14 中国航空工业集团公司西安航空计算技术研究所 Ima应用软件故障注入方法
CN109656560A (zh) * 2017-10-11 2019-04-19 深圳市中兴微电子技术有限公司 一种解码方法、装置及存储介质
CN109683900B (zh) * 2018-11-14 2022-02-18 浙江零跑科技股份有限公司 针对elf文件调试信息的通用上位机符号查找与解析方法
CN113434394B (zh) * 2021-06-22 2023-07-21 青岛海尔科技有限公司 软件的异常处理方法及装置、存储介质及电子装置
CN114124772A (zh) * 2021-11-05 2022-03-01 中国航空工业集团公司雷华电子技术研究所 一种基于VxWorks操作系统的网络调试方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
嵌入式软件调试器的设计与实现. 温平川,何先刚,殷茜.西南师范大学学报(自然科学版),第28卷第2期. 2003
嵌入式软件调试器的设计与实现. 温平川,何先刚,殷茜.西南师范大学学报(自然科学版),第28卷第2期. 2003 *

Also Published As

Publication number Publication date
CN101178684A (zh) 2008-05-14

Similar Documents

Publication Publication Date Title
CN100511177C (zh) 一种嵌入式系统的符号定位方法
CN109902105B (zh) 用于微服务架构的数据查询系统、方法、设备及存储介质
US20030093433A1 (en) Method and system for software application development and customizible runtime environment
EP2246787B1 (en) Systems and methods for identifying the root cause of an application failure in a mainframe environment based on relationship information between interrelated applications
US8782609B2 (en) Test failure bucketing
US8645938B2 (en) System and method for replacing code
CN102789416A (zh) 面向bit软件测试的存储器故障注入方法及其模拟器
US7376937B1 (en) Method and mechanism for using a meta-language to define and analyze traces
Hammad et al. Automatically identifying changes that impact code-to-design traceability during evolution
CN101251799B (zh) 管理实现的方法和装置
US20070088740A1 (en) Information system development
CN101866315A (zh) 软件开发工具的测试方法及系统
CN113050953A (zh) 基于注释生成代码的方法、装置及存储介质
US7475293B1 (en) Product check matrix
US11327720B2 (en) Automated generation of software bindings
Hammad et al. Automatically identifying changes that impact code-to-design traceability
CN102144230A (zh) 基于记录的代码结构
US8819626B2 (en) Sharable development environment bookmarks for functional/data flow
Gao et al. Service reconfiguration architecture based on probabilistic modeling checking
EP2535813B1 (en) Method and device for generating an alert during an analysis of performance of a computer application
Al-Azzoni et al. A framework for the regression testing of model-to-model transformations
CN111290749B (zh) 一种数据处理方法、智能终端及存储介质
Iyer High Time For High Level ATPG
Merriam et al. Measurement and tracing methods for timing analysis: Independently and in combination with modelling methods
Zheng et al. Protocol-guided analysis of post-silicon traces under limited observability

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: GUANGDONG HUABO ENTERPRISE MANAGEMENT CONSULTING C

Free format text: FORMER OWNER: ZTE CORPORATION

Effective date: 20141008

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518057 SHENZHEN, GUANGDONG PROVINCE TO: 510640 GUANGZHOU, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20141008

Address after: 510640 Guangdong city of Guangzhou province Tianhe District gold Yinglu No. 1 was 1106 room two

Patentee after: Guangdong Huabo Enterprise Management Consulting Co., Ltd.

Address before: 518057 Nanshan District high tech Industrial Park, Guangdong, South Road, science and technology, ZTE building, legal department

Patentee before: ZTE Corporation

ASS Succession or assignment of patent right

Owner name: STATE GRID SHANGHAI ELECTRIC POWER COMPANY

Free format text: FORMER OWNER: GUANGDONG HUABO ENTERPRISE MANAGEMENT CONSULTING CO., LTD.

Effective date: 20141121

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 510640 GUANGZHOU, GUANGDONG PROVINCE TO: 200002 PUDONG NEW AREA, SHANGHAI

TR01 Transfer of patent right

Effective date of registration: 20141121

Address after: 200002 Shanghai City, Pudong New Area source deep road, No. 1122

Patentee after: State Grid Shanghai Municipal Electric Power Company

Address before: 510640 Guangdong city of Guangzhou province Tianhe District gold Yinglu No. 1 was 1106 room two

Patentee before: Guangdong Huabo Enterprise Management Consulting Co., Ltd.