论文部分内容阅读
近年来,随着嵌入式系统的普及,嵌入式软件尤其是应用软件迅速发展。由于处理器和嵌入式系统日趋复杂化,嵌入式软件规模也越来越大。作为嵌入式开发的重要环节,针对嵌入式设备的交叉调试工作日趋繁琐。如何改进交叉调试技术,提高嵌入式软件的开发效率已经成为亟待解决的问题。由于Linux操作系统在嵌入式领域的主导地位,Unix/Linux环境下的标准调试器GDB (GNU Debugger)已经成为大多数嵌入式开发者首选的调试工具。本论文针对当前嵌入式软件调试日趋复杂化的问题,提出了一种嵌入式协同调试环境的设计模型,实现了单主机调试,多主机同步显示的功能,使得开发小组内不同地理位置的成员能够通过该环境实现对于同一目标程序的同步调试操作,从而通过开发成员之间的协同来提高调试的效率。本论文首先分析了GDB远程调试的实现机制、并行调试器中多任务调试的实现模型以及GDB通过MI接口在大型软件系统中集成的方法,从而提出了针对嵌入式系统的协同调试环境的基本架构;在此基础上,通过改进GDB的事件机制,解决了协同调试环境用户前端响应用户指令时被并行事件中断的问题;针对协同调试中同步调试的需求,本文提出了一种基于优先权的数据转发和同步技术,实现了协同调试小组在控制主机的操作下,将调试结果同步到所有主机的功能;协同调试的服务器端并行指令到达时间的不确定性往往会引起指令间冲突,针对这个问题,本文提出了一种将指令串行化的事务处理机制,确保了每一条指令的完整执行。本文最终提出了嵌入式协同调试环境的客户端、服务器端和目标机守护程序在Linux系统下的具体设计方案,实现了控制主机的调试过程同步显示到其他主机的功能,也确保了非控制主机的查询操作不干扰其他主机的同步调试操作。