在micro2440上测试通过,作此文笔记。
大概步骤是:下载gdb源码编译,将gdbserver拷贝到arm板上运行,启动主机上的gdb开始调试。
1、下载gdb源码
一个可用地址是:。我下载的是
2、解压gdb源码
比如我的源码压缩包路径是/home/nzq/arm_rd/gdb-6.6.tar.gz
> cd /home/nzq/arm_rd/
> tar vxfz gdb-6.6.tar.gz -C ../src/ /* 解压到../scr目录 */
3、创建gdb和gdbserver的编译目录
> mkdir /home/nzq/build/mygdb /*在这个两个目录下配置和编译*/
> mkdir /home/nzq/build/mygdbserver
4、配置和编译gdb
> cd /home/nzq/build/mygdb
> ../../src/gdb-6.6/configure --target=arm-linux --prefix=/home/nzq/build/mygdb
配置的最后一行显示:"creating Makefile"配置完毕
说明:"../../src/gdb-6.6/"是gdb源码所在文件夹;target是目标板,micro2440是arm-linux prefix是目标文件的安装目录。因为我已经安装过arm交叉工具/usr/local/arm/4.3.2/bin/下已经有一个arm-linux-gdb,所以我将安装目录设在当前目录(make install时用到)。
> make
make完成后在当前目录下生成了gdb/gdb等等
> make install
install完成后在当前目录bin文件夹下生成了:
arm-linux-gdb arm-linux-gdbtui arm-linux-run
4、配置和编译gdbserver
> cd /home/nzq/build/mygdbserver
> chmod +x ../../src/gdb-6.6/gdb/gdbserver/configure
> CC=arm-linux-gcc ../../src/gdb-6.6/gdb/gdbserver/configure \
--host=arm-linux --prefix=/home/nzq/build/mygdbserver
> make
make完成后在当前目录下生成gdbsever等文件
> make install
install完成后在当前目录bin文件夹下生成了:gdbsever文件。我的理解应该是将前面的gdbserver拷贝到安装目录下的bin文件下而已,正好前年定义的安装目录就是当前目录。
5、编译测试程序
编辑hello.c如下:
/***************************************/
#include
#include
int main(void){
printf("Hello,2440.\n");
printf("Hello,gdbserver.\n");
return 0;
}
/***************************************/
> arm-linux-gcc -g hello.c -o hello /*使用-g选项编译,调试的时候可以看到源代码*/
5、将gdbserver和测试程序hello拷贝到arm板上运行
我使用nfs做为arm板的根文件系统,因此将gdbserver拷贝到nfs的目录下就行了。关于nfs需要在/etc/exports文件中设置,不在次详细说明。
先用ifconfig看一下arm板的ip地址是多少,micro2440默认设置是192.168.1.230。
% gdbserver 192.168.1.102:2345 hello (%:用"%"表示arm板终端显示)
gdbserver开始侦听2345端口,然后启动hello
这时候arm板终端打印:
Process hello created; pid = 575
Listening on port 2345
6、回到host终端
> ./arm-linux-gdb hello
最后一行显示:
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux"...
说明运行在x86的host上,但调试目标是arm代码。
> (gdb) target remote 192.168.1.230:2345
这时候arm板终端显示:
Remote debugging from host 192.168.1.102
说明和主机已经连接上了。
剩下的和x86上的gdb调试一样了。
另外arm-linux-gdbtui带简单的文本界面显示,看起来可能会直观一些。
阅读(1364) | 评论(0) | 转发(0) |