论文部分内容阅读
随着计算机应用的不断普及和深化,嵌入式系统及其应用已经成为全球IT产业发展的一个热点。嵌入式系统的调试作为嵌入式软件开发的一个不可或缺的辅助手段,占有十分重要的位置。本文对嵌入式Linux交叉调试器设计与实现技术进行了研究。主要内容如下:
⑴为Linux程序开发提供一个友好的、易操作的交叉调试环境,开发了基于嵌入式Linux的源码级交叉调试器。该调试器运行于Windows环境下,目标端为基于ARM体系结构的嵌入式CPU芯片,调试代理采用GDBServer,调试对象为采用DWARF2调试信息格式的ELF目标文件。
⑵在该交叉调试器中,RSP协议是调试器与GDBServer的消息通信规范。宿主端调试器采用RSP协议对调试命令进行封装并发送给目标机上的调试代理GDBServer,接收调试代理返回的调试信息并依据RSP协议对调试信息进行解析,以获取目标程序的当前运行状态。为了协调配合调试器和调试代理之间的有效通信,提供了RSP协议的消息发送与接收程序。
⑶源代码与目标代码之间的映射关系是源码级调试的关键。为此,研究了ELF目标文件格式和DWARF2调试信息格式,设计了相应的符号表数据结构,使用BFD库提供的接口读取ELF目标文件上的采用DWARF2格式的调试信息,为源码中的每一个符号提供了相关的调试信息,实现了源代码和目标程序之间的映射。
⑷分析了交叉调试的工作过程,设计了一组调试命令,定义了相关数据结构,介绍了宿主端调试器的主控循环,并以断点设置、连续执行和单步执行为例,介绍了相应调试功能的实现技术。