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


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