一种嵌入式系统的符号定位方法技术方案

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

【技术实现步骤摘要】

本专利技术涉及嵌入式系统,特别涉及嵌入式系统的符号定位。
技术介绍
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁 剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专 用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系 统以及嵌入式应用程序等四大部分组成,用于实现对其他设备的控制、监 视或管理等功能。嵌入式系统开发不同于通用的基于桌面机的程序开发。由于桌面机拥 有丰富的计算、存储和外设资源,因此程序开发、调试、测试都是在同一台电脑上进行的;但对于嵌入式系统来说,由于系统的计算、存储和外设 资源是专门根据应用需求定制,因此用于程序开发、调试、测试的资源非 常有限,业界普遍采取主机/目标机的方式进行——在桌面机上进行程序 开发和测试,在桌面机和嵌入式系统之间建立通信通道,进行远程调试。当嵌入式软件在程序调试阶段中发生故障的时候,开发人员可以方便 地通过功能强大的调试器准确定位故障,及时修复程序中的缺陷。但是, 当嵌入式软件在程序发布之后发生了故障,工程人员就难以用现有的工具 来定位故障。原因是在程序调试阶段运行的嵌入式軟件中包含了丰富的调 试信息,可用于支持远程调试器从目标机上获取嵌入式软件的运行期信 息;而出于效率和节省存储资源的考虑,在程序发布之后运行的嵌入式软 件已经将调试信息去掉,不能支持远程调试器的工作,导致无法有效地进 行故障定位。有的嵌入式应用系统为了能够在程序发布之后仍然能够方便地进行 故障定位,在发布版本中加入了调试信息,但付出了时间和空间的代价。而有的嵌入式应用系统针对这种问题提出了解决方案在程序发布阶^:去 掉了调试信息,同时输出发布版本的符号表信息文件(如MAP文件), 开发出主机端的工具分析出符号表信息文件中符号和内存地址的对应关 系,并通过运行于主机端和目标机端的调试代理建立通信通道,当嵌入式 应用软件发生故障的时候,通过符号和内存地址的对应关系简单地查看和 修改嵌入式系统中的全局变量。这类方法确实为不带调试信息的嵌入式软 件的故障定位提供了一种比较有效的手段,但故障定位往往需要获取类、 结构、函数调用栈、函数局部变量等信息,才能更为准确地定位故障,对 于这些信息的获取,上述方法就无能为力了。
技术实现思路
针对以上不足,本专利技术提出一种新的嵌入式系统的符号定位方法。该 方法适用于带有或不带有调试信息的嵌入式软件版本,不仅能提供查看和 修改全局变量的功能,还提供了获取和修改类、结构、函数调用栈、函数 局部变量等信息的功能,从而为嵌入式系统故障定位提供一种强有力的辅 助手段。本专利技术采用的技术方案是,其特征在于,所述方法包括(1) :针对嵌入式应用软件的调试版本,生成调试版本的符号表信 息文件,此文件包含了程序中所有符号的名称和物理存储地址;然后生成 调试版本的符号类型信息文件,此文件包含了程序中所有符号的名称、类 型以及逻辑存储布局信息;针对嵌入式应用软件的发布版本,生成发布版本的符号表信息文件, 此文件包含了程序中所有符号的名称和物理存储地址;(2) :从调试版本的符号表信息文件获取符号名称、物理存储地址 信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布 局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、 逻辑存储布局信息之间建立起关联关系,生成调试版本的符号类型信息数据库;从发布版本的符号表信息文件获取符号名称、物理存储地址信息,从 调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息; 然后以符号名称作为关^l走字,在符号名称、物理存储地址、类型、逻辑存 储布局信息之间建立起关联关系,生成发布版本的符号类型信息数据库;(3) :建立起主机端和目标机端之间的通信通道;根据目标机端的 嵌入式应用系统的运行版本,以及需要查看或者修改的符号名称,查询相 应版本的符号类型信息数据库,将类型结构分解成起始物理地址和类型长 度信息,从而获取所述符号在目标机端的物理位置。进一步地,所述符号包括全局符号和静态符号。进一步地,所述符号至少包括结构、类、函数调用栈、局部变量和全 局变量。进一步地,所述调试版本带有调试信息,发布版本不带有调试信息。进一步地,所述符号表信息文件为MAP文件。进一步地,步骤(1)前还存在步骤(0):在编译嵌入式应用软件的 目标代码过程中,分别生成调试版本和发布版本。进一步地,当查询符号数值时,在所述步骤(3)后还存在(4) :通过调试代理从目标机端查询内存数据并返回到主机端;主 机端根据相应符号在符号类型信息数据库中的类型逻辑存储布局,将查询 返回的内存数据按照对应的逻辑存储布局进行数据解析,得到相应数值。本专利技术的技术方案适用于对带有或不带有调试信息的嵌入式软件版 本实现在目标机端的符号定位,为嵌入式应用系统的发布提供了灵活的选 择空间。使用该专利技术不仅可以查询和修改全局变量,而且能够详细地查询 和修改结构、类、函数、局部变量等信息,从而为嵌入式应用系统提供更 为丰富的故障定位辅助方法。本专利技术的技术方案不受任何编译器、调试器、 操作系统的限制,可以应用在运行各种不同操作系统的嵌入式系统,具有 广泛的应用范围。附图说明图1是实施例1中查询符号数值的工作流程图; 图2实施例代码片断示意图; 图3符号表信息文件片断示意图; 图4符号类型信息文件片断示意图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图以及例 子来详细解析本专利技术的实施步骤。实施例1,在pSOS嵌入式实时操作系统环境下实施,首先编写测试 例子代码,如图2所示,设计一个简单的测试类MyTestClass,该类有一 个私有整型变量i, 一个构造函数和一个析构函数,以及一个用来设置变 量i的公有成员函数Setl;定义一个全局对象实例g—mytest,在主函数中 调用测试函数test,将私有变量i的值设置为Oxfeedfeed;然后使用基于本 专利技术的技术方案所开发的故障诊断工具查看g—mytest的数据,检验全局对 象g—mytest数据的正确性,同时可以查看root任务的函数堆栈,检验函 数、局部变量、任务调用栈的正确性,具体实施步骤如下,参见图1:101:在pSOS集成开发环境下,使用diab编译器分别编译出测试代 码的调试版本和发布版本一一使用编译选项-g可以编译出带有调试信息 的调试版本debug.elf,而去掉选项-g并增加优化选项-02可以生成不带调 试信息的发布版本release.df。102:为调试版本生成符号表信息文件,比如MAP文件,和符号类型 信息文件;为发布版本生成符号表信息文件。由于调试版本中包含的调试 信息遵循一定业界标准,所以可以通过多种方法获取符号表信息和符号类 型信息,下面列举其中一种方法使用pSOS集成开发环境下的调试信息 提取工具ddump,净丸4亍命令ddump -Nx debug.elf > symbol_debug.txt,为调 试版本生成符号表信息文件,参见图3的符号表信息文件片断示意图;执 行命令ddump -D debug.elf > typeinfo.txt,为调试版本和发布版本生成符号类型信息文件,参见图4的符号类型信息文件片断示意图;执行命令本文档来自技高网
...

【技术保护点】
一种嵌入式系统的符号定位方法,其特征在于,所述方法包括:(1):针对嵌入式应用软件的调试版本,生成调试版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;然后生成调试版本的符号类型信息文件,此文件包含了程序中所有符 号的名称、类型以及逻辑存储布局信息;针对嵌入式应用软件的发布版本,生成发布版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;(2):从调试版本的符号表信息文件获取符号名称、物理存储地址信息,从调试版本的符 号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成调试版本的符号类型信息数据库;从发布版本的符号表信息文件获取符号名称、物理存储地址 信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成发布版本的符号类型信息数据库;(3):建立起主机端和目标机端之 间的通信通道;根据目标机端的嵌入式应用系统的运行版本,以及需要查看或者修改的符号名称,查询相应版本的符号类型信息数据库,将类型结构分解成起始物理地址和类型长度信息,从而获取所述符号在目标机端的物理位置。...

【技术特征摘要】
1.一种嵌入式系统的符号定位方法,其特征在于,所述方法包括(1)针对嵌入式应用软件的调试版本,生成调试版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;然后生成调试版本的符号类型信息文件,此文件包含了程序中所有符号的名称、类型以及逻辑存储布局信息;针对嵌入式应用软件的发布版本,生成发布版本的符号表信息文件,此文件包含了程序中所有符号的名称和物理存储地址;(2)从调试版本的符号表信息文件获取符号名称、物理存储地址信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成调试版本的符号类型信息数据库;从发布版本的符号表信息文件获取符号名称、物理存储地址信息,从调试版本的符号类型信息文件获取符号名称、类型、逻辑存储布局信息;然后以符号名称作为关键字,在符号名称、物理存储地址、类型、逻辑存储布局信息之间建立起关联关系,生成发布版本的符号类型信息数据库;(3)建立起主机端和目标机端之间的通信通道;根据目标机端的嵌入式应...

【专利技术属性】
技术研发人员:李巍黄海伦李小伟
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1