论文部分内容阅读
嵌入式设备是数字化时代的一大主流产品。嵌入式软件是数字化产品的核心,而嵌入式操作系统和开发工具又是嵌入式软件的基础和龙头。在嵌入式软件开发过程中,调试工作最终需要采用交叉调试方式进行。当今嵌入式应用日趋复杂,多半有操作系统支持,采用多任务编程,这就要求交叉调试器能提供任务级的特殊调试支持。任务级调试系统仍然采用交叉调试方式,因此包括宿主机方的调试器(ZGDB)和目标机方的调试代理(TDAgent)两部分实现任务级调试功能。前者发送调试命令,并接收命令的执行结果;后者接收并执行调试器发送的调试命令。 本文首先阐述了调试中的基本原理以便对调试器有个整体的认识。接着对图形化GDB(GNU’s Debugger)的Insight进行了深入的分析。然后在分析的基础上对Insight进行了改造,使其支持动态下载和远程创建线程功能。同时对图形界面进行了完善以便用户使用。 交叉调试分为系统级调试和任务级调试,而任务级调试是本文研究的重点。首先分析了系统级调试和任务级调试的概念,原理和工作流程。任务级调试代理在操作系统的支持下作为一个任务运行,它是整个系统实现的关键。接着便设计并实现了任务级调试代理TDAgent。TDAgent完成了调试的基本功能:创建线程/进程,跟踪或解除跟踪线程/进程,杀死线程/进程,单步,继续运行,读写内存,读写寄存器,重新启动被调试程序等。除了基本调试功能之外,还增加了对被调试任务的识别、运行控制,以及根据用户的不同要求,绑定某个任务(集)进行调试等。调试代理的实现采用模块化和层次化设计,系统功能强大,具有良好的命令响应实时性、可移植性、可剪裁性,可以满足不同用户的调试需求。 Tornado是目前非常流行的嵌入式开发工具。而通过测试,ZGDB达到了Tornado的80%的性能。目前,ZGDB开始在公司内部使用,并取得了良好的效果和经济效益。