当前位置:无忧公文网 >范文大全 > 征文 > 基于Eclipse的嵌入式软件交叉调试

基于Eclipse的嵌入式软件交叉调试

时间:2022-03-24 09:21:57 浏览次数:

报告的数据,转换为MI命令回复交给CDT;CDT根据MI命令回复确定该调试命令的执行结果。

4 关键技术

4.1 符号表管理技术

符号表是源码级调试的必要功能。在本地调试过程中,由GDB管理符号表并提供查询接口。交叉调试时,可能GDB尚未启动,或者不具备查询状态,不能从GDB获得符号信息,需要调用脱离GCC工具链和GDB的符号表解析程序。解析程序包含4部分:Symbol类、Section类、ElfHeaher类、Elf类和符号表管理类SymbolManager。

Symbol类描述符号相关信息,包括符号名字、符号地址、符号类型以及符号所属段等数据。

Section类描述段相关信息,包括段名字、段类型、段属性、装入地址和段偏移及大小等数据。

ElfHeaher类描述Elf文件头信息,包括文件类型、目标体系类型、处理器标识、文件入口地址、Elf头偏移及大小、段表信息等数据。

Elf类解析带有调试信息的目标文件信息,创建相关信息对象:一个ElfHeader对象、一组Section对象和一组Symbol对象。

SymbolManager类提供设置符号文件、根据源代码行号查地址、根据地址查源代码行号、根据地址查符号、根据符号查地址以及获得指定段等接口。

4.2 CDT调试扩展技术

交叉调试对CDT调试的扩展主要是在建立和目标机服务器的通信链接,启动并初始化支持交叉调试的GDB方面,主要包括以下方面:

(1) 扩展交叉调试命令集实现CrossCommandFactory。CDT默认的调试命令集包含GDB的MI命令和部分CLI命令,需要加入新的命令如增加符号文件、根据源代码行号查地址命令、根据地址查符号以及根据符号查地址等命令;

(2) 扩展交叉调试器实现CrossDebugger。启动交叉调试器需要找到符合目标机体系结构的GDB,添加符号表文件,把CDT建立的本地调试对象Target转换为交叉调试对象CrossTarget以记录远程目标机的调试上下文,维护调试会话使用的目标机服务器链接等参数;

(3) 扩展交叉调试器配置实现CrossDebuggerPage。在调试启动配置中添加交叉调试需要的参数配置界面;

(4) 扩展交叉调试器启动代理实现CrossLaunchDelegate。根据配置链接目标机服务器指定要调试的目标机,加载待调试程序到目标机;还有可能需要重定位目标文件、设置所调试程序参数;根据配置启动交叉调试器,创建调试会话,初始化源代码查找器。

5 结  语

本文主要研究以开源的Eclipse和CDT 项目为依托,在分析Eclipse、CDT和GDB的功能特性的基础上,根据CDT的扩展服务,实现在宿主机上利用交叉调试GDB,调试远程目标机程序的源代码级交叉调试功能。该交叉调试支持通用的调试操作如设置删除断点、源代码级或汇编级单步执行、连续执行目标程序、查看/修改目标程序变量、寄存器、内存和查看表达式等。进一步,在嵌入式软件开发阶段,开发者必须要对目标系统运行状态具有完全的观察和控制能力, 例如硬件的各种寄存器、内存空间使用情况、CPU利用率, 操作系统的信号量、消息队列、任务、堆栈等对象和系统任务之间的通信情况、任务的执行轨迹,这将是进一步的工作

参考文献

[1] Anon. Fortify audit workbench user guide [EB/OL]. [2012⁃11⁃17]. http:///link?u.

[2] 魏楚元,李陶深,张增芳.Eclipse:基于插件的下一代通用集成开发环境[J].计算机应用与软件,2005,22(6):38⁃40.

[3] 刘芳,臧威.基于Eclipse平台的嵌入式交叉调试环境MRTOS[J].电子科技,2013,26(5):18⁃21.

[4] Free Software Foundation. GDB user manual [EB/OL] . (2006⁃12⁃13) [2007⁃01⁃09]. http://sourceware. org /gdb/current/onlinedocs/gdb⁃toc.html.

[5] Anon. Eclipse IDE C/C++ development user guide [EB/OL]. [2013⁃11⁃28]. http://...570.html.

[6] 王兴杰,李允,江浩,等.基于Linμx的嵌入式交叉开发技术[J].计算机应用研究,2008(1):206⁃208,214.

推荐访问: 嵌入式 交叉 调试 软件 Eclipse