gdb的编译及使用


参考:

http://blog.csdn.net/ysj1988/article/details/7076159


1、背景
在宿主机上运行gdb。且最好重新编译gdb源码,生成针对ARM的arm-linux-gdb
在目标机上运行gdbserver,需要用arm-linux-gcc编译gdbserver源码来生成

2、安装arm-linux-gcc
下载arm-linux-gcc-4.3.2.tgz
$ tar zxvf arm-linux-gcc-4.3.2.tgz(生成/usr/local/arm/4.3.2文件夹)
设置环境变量
$ sudo vi /etc/profile
在末尾添加export PATH=$PATH:/usr/local/arm/4.3.2/bin,保存
$ source /etc/profile(使环境变量生效)
3、安装arm-linux-gdb
下载gdb-7.3.1.tar.bz2
$ tar -jxvf gdb-7.3.1.tar.bz2
$ cd gdb-7.3.1
$ ./configure --target=arm-linux --prefix=/usr/local/arm-gdb
--target配置gdb的目标平台arm-linux,
--prefix配置安装路径
$ make
$ make install (生成arm-linux-gdb,并存入/usr/local/arm-gdb/bin/)

如果第一次配置错误,导致编译失败,重新修改配置后,可能还是不能生成正确的Makefile文件,提示类似

“ target_alias' has changed since the previous run”的信息,具体不计的了

可能需要重新删除代码重来


设置环境变量
$ sudo vi /etc/profile
在末尾添加export PATH=$PATH:/usr/local/arm-gdb/bin,保存
$ source /etc/profile(使环境变量生效)


4、生成gdbserver
$ cd /opt/gdb-7.3.1/gdb/gdbserver
$ ./configure --target=arm-linux --host=arm-linux
--target=arm-linux表示目标平台,
--host表示主机端运行的是arm-linux-gdb
$ make CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc (必须用arm-linux-gcc 注可以是arm-none-linux-gnueabi-gcc,根据自己的编译器需要进行修改)

把gdbserver拷贝到开发板/usr/local/debug目录下

5、调试

    假设生成的程序为hello,开发板IP为192.168.1.10,主机IP192.168.1.3

开发板:

将hello拷贝到开发板上/usr/local/debug目录下

并运行./gdbserver 192.168.1.3(此IP是调试主机的IP):10000(此端口和主机上的端口要一致) hello

process hello created;pid=1153

Listing on port 10000


在主机上:

/usr/local/arm-gdb/arm-linux-gdb hello

(gdb)target remote 192.168.1.10(此IP是开发板的IP):10000(此端口和开发板的端口要一致

此时,开发板的输入会有类似如戏信息

Remote debugging from 192.168.1.3

然后就可以在提示(gdb)下输入gdb命令进行调试了

退出gdb命令是输入quit


附录:
1)若make时遇到错误:“configure: error: no termcap library found”
则需要安装库:sudo apt-get install libncurses5-dev,然后重新make
2)拷贝gdbserver前,可用arm-linux-strip命令将gdbserver调试符号信息删除
3)在安装arm-linux-gcc时,在/usr/local/arm/4.3.2/bin目录下已经有arm-linux-gdb
可以先删除该目录下的所有gdb:$ sudo rm *gdb*
以便使用新编译的arm-linux-gdb


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章