1. 程式人生 > >arm-linux-gdb & gdbserver 遠端除錯工具的搭建與使用

arm-linux-gdb & gdbserver 遠端除錯工具的搭建與使用

     由於嵌入式系統資源有限性,一般不能直接在ARM上進行除錯,通常採用arm-linux-gdb+gdbserver的方式進行遠端除錯。Target端(ARM)使用 Gdbserver,host端(PC主機)使用arm-linux-gdb,雙方最好統一編譯工具鏈。在應用程式除錯的時候,pc機上的arm-linux-gdb向開發板上的Gdbserver發出命令,接著ARM開發板上的gdbserver就會嚮應用程式發出訊號,從而進行除錯。

     幾個月前,曾利用過gdbserver進行遠端除錯,現在換了新主機,怎麼搭建使用都忘了。一個好記性,不如一個好部落格,看來以後還是得養成多寫部落格的習慣,總感覺網上這方面教程有點亂,索性自己寫一個,方便自己,同時希望也能幫助到他人。注意,我的PC機是ubuntu16.04 64bit系統

1、gdbserver的搭建

1)、下載GDB安裝包,下載地址:http://ftp.gnu.org/gnu/gdb/,以7.8版本為例,下載的安裝包名稱:gdb-7.8.tar.gz

2)、解壓

tar zxvf gdb-7.8.tar.gz

3)、配置交叉編譯器,

cd gdb-7.8/gdb/gdbserver

./configure --host=arm-linux-gnueabihf

: 在編譯gdbserver時,需要指定host為arm-linux,該選項是說明目標平臺是運行於arm體系結構的linux核心,我的ARM平臺32bit,就選擇arm-linux-gnueabihf,

        --target 指定了目標機交叉編譯器字首,比如--target=arm-linux (生成64bit的gdbserver)

        --host   指定了編譯後的程式需要在哪裡執行, 比如,--host=arm-linux

         --prefix  指定了可執行檔案的安裝目錄(我沒有指定,就預設安裝在當前目錄下)

4)、編譯, 4核同時編譯,提高速度,具體根據電腦配置而定

make -j4 

     編譯完成後,會在當前目錄下生成gdbserver 32位可執行程式

5)、檢視檔案資訊,

file gdbserver

結果如下

gdbserver: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=0ff92ed87ce3d66952c25daabc4f60c5418dbdab, not stripped

 6)、將生成的gdbserver adb push到ARM開發板上去(當然,也可用nfs的方式),並修改執行許可權。我的PC主機IP地址是172.16.5.221 ,ARM開發板地址是172.16.5.116,檢視方式如下:

------------------------------------------------------------------------------------------------------------------------------------------

2、arm-linux-gdb搭建

1)進入gdb-7.8的根目錄下,建立用於儲存arm-linux-gdb的資料夾

mkdir arm-gdb

2)配置編譯器,注意目錄必須是絕對路徑

./configure --target=arm-linux --prefix=/home/lyq/tools/gdb-7.8/arm-gdb

3)編譯安裝

make && make install

完成後,arm-gdb資料夾下就生成了如下檔案

4)在bin目錄下就有了arm-linux-gdb和arm-linux-run這兩個可執行檔案,將此路徑新增到系統環境變數即可,例如:

vim ~/.bashrc

在檔案最後一行加入(注意路徑)

export PATH=$PATH:/home/lyq/tools/gdb-7.8/arm-gdb/bin

儲存退出,使新新增的路徑生效

source ~/.bashrc

完成後,輸入export -p 可以檢視路徑是否新增成功。成功後即可在PC上使用arm-linux-gdb了

------------------------------------------------------------------------------------------------------------------------------------------

3 遠端除錯工具的使用

4、遇到的問題及解決方案

1)在步驟2搭建arm-linux-gdb make的時候遇到 configure: error: no termcap library found,這是缺少

ncurses安裝包的原因,下載安裝相應軟體包,即可解決該問題:

sudo apt-cache search ncurses

sudo apt-get install libncurses5-dev