GDB和Insight移植总结
GDB 和 Insight 移植总结 GDB(GNU Debugger)是一款功能强大的调试工具,它可以帮助开发者调试和优化程序。Insight 是一个基于 GDB 的图形化调试器,它提供了一个直观的用户界面,方便开发者进行程序调试。在本文中,我们将讨论如何移植 GDB 和 Insight,以便在特定的开发板上进行程序调试。 软件包下载 要移植 GDB 和 Insight,首先需要下载相应的软件包。GDB 的下载地址是 ftp://ftp.gnu.org/gnu/gdb,而 Insight 的下载地址是 http://sources.redhat.com/insight/。下载后,需要将其解压缩到指定的目录下。 GDB 交叉编译 在编译 GDB 之前,需要先配置编译环境。使用以下命令来配置 GDB: ```bash #cd gdb-6.8 #./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/3.4.1 ``` 在编译 GDB 时,如果出现了 infcall.c 197 行的错误,可以通过修改代码来解决。具体来说,需要在/gdb 目录下将 195 行初始化为 0,即将 enum type_code code = 0;。 编译完成后,会生成 arm-linux-gdb 文件,可以在/usr/local/arm/3.4.1/bin 目录下找到该文件。 GDBSERVER 交叉编译 GDBSERVER 是 GDB 的一部分,它用于远程调试。要编译 GDBSERVER,需要进入 gdb 源码下的 gdbserver 目录,并配置编译环境: ```bash #cd gdb/gdbserver #./configure --target=arm-linux --host=arm-linux --prefix=/usr/local/arm/3.4.1 ``` 在编译时,如果出现 PATH_MAX undeclared 错误,可以通过在 hostio.c 文件中增加 #include <linux/limits.h> 来解决。编译成功后,会生成 gdbserver 文件,可以将其拷贝至目标板上。 Insight 交叉编译 Insight 是一个基于 GDB 的图形化调试器,需要单独编译。使用以下命令来配置 Insight: ```bash #cd insight-6.8 #./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/3.4.1 ``` 编译完成后,会生成 Insight 可执行文件,可以在/usr/local/arm/3.4.1/bin 目录下找到该文件。 GDB 联合调试 要使用 GDB 进行程序调试,需要首先编译带有调试信息的可执行文件: ```bash #arm-linux-gcc –g –o hello hello.c ``` 然后,将编译好的可执行文件 copy 至目标板,并在目标板上运行: ```bash #gdbserver 192.168.1.2:2345 hello ``` 在 host 端,可以使用以下命令连接目标板: ```bash #arm-linux-gdb hello #target remote 192.168.1.168:2345 ``` 或者直接启动 Insight: ```bash #arm-linux-insight hello ``` GDB 命令 GDB 提供了许多命令来帮助开发者调试程序。常用的 GDB 命令包括: * file:装入想要调试的可执行文件 * kill:终止正在调试的程序 * list:列出产生执行文件的源代码的一部分 * next:执行一行源代码但不进入函数内部 * step:执行一行源代码而且进入函数内部 * run:执行当前被调试的程序 * quit:终止 GDB * watch:能监视一个变量的值 而不管它何时被改变 * print:显示表达示的值 * break:在代码里设置断点 * make:不退出 GDB 就可以重新产生可执行文件 * shell:不离开 GDB 就执行 UNIX shell 命令 * delete:删除一个断点或监测点 需要注意的是,在使用 GDB 时可能会出现一些错误,例如 [New Thread 779]Cannot access memory at address 0x6f207473。这些错误可以通过检查代码和配置环境来解决。
- yx24262013-08-08很有价值,还行。
- ppcust2012-03-07有一定的参考价值,但是我编译powerpc的一直没有编译过。
- 普通网友2013-01-03文章不错,但是我编译的时候倒是没有遇到那么多错误,只有一个subscript_array数组没有初始化为0的错误
- 我是Gerry2016-06-05非常好用,不错 不错。有一定的参考价值。
- dplxin2013-07-25有一定参考价值
- 粉丝: 11
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助