1. 程式人生 > >gdbserver除錯工具移植到ARM Linux教程

gdbserver除錯工具移植到ARM Linux教程

目前,嵌入式 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埠。

出自: http://www.veryarm.com/648.html