gdbserver調試工具移植到ARM Linux教程

應用移植 7510瀏覽 1評論

目前,嵌入式 Linux系統中,主要有三種遠程調試方法,分別適用于不同場合的調試工作:用ROM Monitor調試目標機程序、用KGDB調試系統內核和用gdbserver調試用戶空間程序。這三種調試方法的區別主要在于,目標機遠程調試stub 的存在形式的不同,而其設計思路和實現方法則是大致相同的。

而我們最常用的是調試應用程序。就是采用gdb+gdbserver的方式進行調試。在很多接在情況下,用戶需要對一個應用程序進行反復調試,特別是復雜的程 序。采用GDB方法調試,由于嵌入式系統資源有限性,一般不能直目標系統上進行調試,通常采用gdb+gdbserver的方式進行調試。 Gdbserver在目標系統中運行,gdb則在宿主機上運行。

要進行GDB調試,目標系統必須包括gdbserver程序,宿主機也必須安裝gdb程序(目前似乎也可以用ARM的DS-5工具來替換宿主機的GDB,實現可視化調試)。一般linux發行版中都有一個可以運行的gdb,但開發人員 不能直接使用該發行版中的gdb來做遠程調試,而要獲取gdb的源代碼包,針對arm平臺作一個簡單配置,重新編譯得到相應gdb。

1 下載

下載GDB安裝包,本文以當前最新版本7.8最為例,下載地址:http://ftp.gnu.org/gnu/gdb/,下載的安裝包名稱:gdb-7.8.tar.gz

 

2 解壓

復制安裝包到Linux主機,并解壓:

$?mkdir ~/gdb
$?cp?gdb-7.8.tar.gz ~/gdb
$?cd ~/gdb
$?tar zxvf gdb-7.8.tar.gz

 

3 配置

進入 gdbserver 目錄,配置環境變量和編譯選項:

$?cd?gdb-7.8/gdb/gdbserver
$?export PATH=$PATH:/usr/local/arm-2010q1/bin/           # 交叉編譯器路徑
$?./configure --host=arm-none-linux-gnueabi               # 配置交叉編譯器
  • ?--host: 指定交叉編譯工具,一般為arm-none-linux-gnueabi、arm-linux-gnueabihf、arm-linux等,具體要和目標板用的交叉編譯工具對應。

4 編譯

編譯命令如下:

$?make -j4                                                # 四核同時編譯,提高速度

注意:gdbserver不需要make install。?

完成后,會在編譯目錄下生成一個 gdbserver 執行文件。

5 測試

將編譯生成的 gdbserver 復制到目標板/usr/sbin上,修改執行權限,然后測試一個簡單的helloworld程序:

$ cp gdbserver /usr/sbin                                  # 復制gdbserver到命令專用目錄
$ chmod +x /usr/sbin/gdbserver                            # 增加為可執行權限
$ gdbserver 192.168.1.100:5000 helloworld                 # 啟動調試,等待主機連接
Process helloworld created; pid = 698
Listening on port 5000

如上,gdbserver 已經執行,并偵聽指定的5000端口。

發表我的評論
取消評論

表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

網友最新評論 (1)

  1. gdbserver是個不錯的來源調試工具
    第一次臉紅 6年前 (2014-10-25) 回復 編輯
王中王鉄算盘历史开奖记录