參考:
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