使用GDB调试嵌入式系统

ZDNet软件频道 时间:2003-08-15 作者:ZDNet China |  我要评论()
本文关键词:embedded
作为GNU 的调试器,GDB是一个免费的调试器,开发人员可以用它来进行带有GCC工具的嵌入式系统的远端调试。本文将介绍在你的主站点上需要哪些软件和嵌入式设备,这样有助于你能够使用GDB调试嵌入式代码。
本文译自Builder.com,未经许可请勿转载GNU GCC是用于ARM, MIPS, SuperH, PowerPC, x86和其他32位处理器的许多高端系统的编译器工具。作为GNU 的调试器,GDB是一个免费的调试器,开发人员可以用它来进行带有GCC工具的嵌入式系统的远端调试。你可以通过一系列的端口或TCP/IP连接运行这一远距离调试。

本文将介绍在你的主站点上需要哪些软件和嵌入式设备,这样有助于你能够使用GDB调试嵌入式代码。

主机调试器

在主机站点上,你将必须需要一个GDB版本以作为目标处理器的调试器。卖方提供的GNU GCC工具应该附带一个编译好的可执行的GDB,否则,你必须从RedHat下载源代码或者需要一个GNU FTP,然后自己建立调试器。如果你要运行一个Linux主机或者一个Windows的Cygwin,建立调试器是一个相对简单的过程。

目标“树桩(stub)”

GDB调试器与一个运行于目标处理器的小“树桩(stub)”交流。主机调试器与一个使用简单的支持读写注册表和内存的协议交流。你将会发现GDB源目录中有许多处理器体系的写好的“树桩”,比如sh-stub.c, i386-stub.c, and m68k-stub.c。

如果你没有找到一个适合的“树桩”,在SourceForge上检查gdbstubs工程。你需要编译和连接合适的“树桩”到目标嵌入程序和提供两个通讯函数:getDebugChar()和putDebugChar()。你的系统初始化代码也会调用set_debug_traps()函数来初始化“树桩”和安装必要的调试异常处理。

编写自己的“树桩(stub)”

如果你无法找到已经写好的“树桩”,你不得不自己编写自己的“树桩”。如果你对目标CPUx体系很熟悉的话,这样的工程也不是很复杂。最简单的方法就是对现成的“树桩”进行更改。“树桩”中绝大多数的代码都与通讯协议有关,可以可以不变地使用于不同处理器之间。

你将需要更改内嵌汇编程序部分,这主要处理安装和处理处理器的异常问题,包括断点,单步,以及通用的保护错误。

异常处理相对比较简单:它们必须将CPU注册存放在一个静态缓冲器,然后输入handle_exception()函数,这一函数带有一个显示异常原因的整数参数。handle_exception()函数然后取得对CPU的控制并处理与主机调试部分的所有通讯。你将需要对handle_exception()函数作一些特别是更改,但绝大部分的代码都是可以利用的。

GDB的GUI

GDB是内嵌命令的工具。如果你适合于这一水平的工作,你将发觉用户界面对基本的调试任务非常的快捷和方便。如果你觉得更适应使用GUI调试器,你也必须安装GDB的GUI中的一个,比如Insight

如果你对这方面更多的知识感兴趣,请查看extensiv online documentation on GDB(GDB中广泛在线文档)。

David Brenan是一个具有15年经验的嵌入式系统开发人员,他的工作包括授过奖章的专用数字音频产品的设计。



责任编辑:炒饭

欢迎评论投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134