天天看點

嵌入式Linux的GDB調試環境建立

嵌入式Linux的GDB調試環境由Host和Target兩部分組成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。這樣,應用程式在嵌入式目标系統上運作,而gdb調試在Host端,是以要采用遠端調試(remote)的方法。

    一、建立安裝gdb元件

    從ftp://ftp.gnu.org/gnu/gdb上下載下傳gdb套件,我下載下傳的是gdb-5.2.1.tar.gz。假定在debug下編譯gdb套件,你前面已經設定了TARGET,PREFIX參數。其中TARGET是你的目标闆,我的是arm-linux,PREFIX是你要安裝的目标檔案夾。

$tar xvzf gdb-5.2.1.tar.gz

$mkdir debug/build-gdb

$cd build-gdb

$../gdb-5.2.1/configure --target=$TARGET --prefix=$PREFIX

$make

$make install

然後建立gdbserver。

$mkdir debug/build-gdbserver

$cd build-gdbserver

$chmod +x ../gdb-5.2.1/gdb/gdbserver/configure

$CC=arm-linux-gcc ../gdb-5.2.1/gdb/gdbserver/configure \

>--host=$TARGET --prefix=$TARGET

  使用arm-linux-strip指令處理一下gdbserver,然後将之複制到你的根檔案系統的/usr/bin下,建立ramdisk盤。

    二、調試步驟

1、交叉編譯,帶參數-g加入調試資訊。

  假設要調試的程式為test.c。

#arm-linux-gcc -g test.c -o test

2、在Target Board開啟gdbserver

#gdbserver  :2345 test

gdbserver開始監聽2345端口(你也可以設其他的值),然後啟動test,你會看到“Process test created:pid=157”

3、回到Host端

#arm-linux-gdb test

  最後一行顯示:This GDB was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...

說明此gdb在X86的Host上運作,但是調試目标是ARM代碼。

(gdb)target remote :2345

  注意:你的端口号必須與gdbserver開啟的端口号一緻,這樣才能進行通信。

  建立連結後,就可以進行調試了。調試在Host端,跟gdb調試方法相同。注意的是要用“c”來執行指令,不能用“r”。因為程式已經在Target Board上面由gdbserver啟動了。結果輸出是在Target Board端,用超級終端檢視。

繼續閱讀