4. GDB 遠程調試
我是參考的這篇文章:http://bashell.sinaapp.com/archives/eclipse-cdt-gdbserver-arm-remote-debugging-1.html
做嵌入式Linux開發也不用再羨慕windows程序員VS集成開發環境的強大,我們同樣能夠搭建出給力的IDE。
今天在這裏記錄一下我使用Eclipse-cdt,gdb,gdbserver搭建遠程arm調試的過程。
首先介紹下,嵌入式Linux的GDB調試環境由Host和Target兩部分組成,Host端可以理解爲本機,Target端爲嵌入式設備。
Host端使用arm-linux-gdb,Target 端使用gdbserver。
調試時,應用程序在嵌入式目標系統上通過運行,而gdb調試在Host端。
- 編譯gdb
在GNU官網下載最新版GDB ,我這裏下載的是7.2版本gdb-7.2.tar.gz
- 編譯gdb
$ tar xvf gdb-7.2.tar.gz
$ cd gdb-7.2
$ ./configure --target=arm-linux --prefix=/home/aliang/arm-gdb
$ make -j2
$ make install
可以通過export命令將/home/aliang/arm-gdb/bin目錄加入PATH,使arm-linux-gdb可以直接使用,也可以直接拷貝到/usr/bin 或arm-linux-gcc同目錄
- 編譯gdbserver
$ cd gdb/gdbserver $ ./configure --host=arm-linux $ make -j2 這裏沒有定義安裝目錄,因爲gdbserver是運行在嵌入式設備端的。 make之後,gdbserver程序就在當前目錄下,拷貝到tftpd目錄後在設備端通過tftp命令下載
- 調試程序
通過加-g參數 交叉編譯帶調試信息的程序$ arm-linux-gcc -g ipcam.c -o ipcam
拷貝到設備端後,使用gdbserver打開程序
$gdbserver <host-ip>:10000 ipcam
主機使用arm-linux-gdb調試程序
$ arm-linux-gdb ipcam
輸入gdb遠程調試指令
(gdb) target remote <target-ip>:10000
這時,設備端打印
Remote debugging from host 192.168.1.102
說明遠程調試已經建立起,可以開始在host端調試
- gdb指令可真多,我不是牛人,自認沒那技術通過指令就能調試出想要的結果,結合eclipse的圖形調試界面快速尋找答案纔是我想要的。
介紹瞭如何編譯、運行arm-linux-gdb 和 gdbserver,這一篇中介紹怎樣結合Eclipse-cdt進行圖形化編譯調試
首先當然是使用CDT創建項目並添加源文件。
- 在左側 Project Explorer 的項目名上點右鍵->Properties 進入項目屬性設置
- 選擇 C/C++ Build->Settings 在Tool Settings中,將Toolchain修改爲arm版本
GCC C Compiler :arm-linux-gcc GCC C Linker : arm-linux-gcc GCC C Assembler :arm-linux-ar
其他選項默認就好,有需要自己修改
- [可選]Build Steps 這裏可以填些編譯步驟,我這裏希望編譯後自動將程序拷貝到tftpd的目錄以方便arm端直接下載
那麼就在Post-build steps -> Command: 中填寫cp ipcam /tftpboot
編譯部分修改完,接下來是調試部分
- 選中項目->菜單欄 ”Run“->Debug Configurations…
- 雙擊C/C++ Applecation 新建一個配置,Eclipse會根據當前選擇的項目初始化大部分配置,這裏只需修改Debugger配置頁
- 選擇進入Debugger配置頁
Debugger:
選擇gdbserver Debugger
Debugger Options:
GDB Debugger 這項,如果上一篇中編譯出的的arm-linux-gdb拷貝到PATH的目錄,或者將arm-linux-gdb的目錄加入到PATH,那麼這裏直接填arm-linux-gdb就可以了,否則瀏覽目錄選擇帶路徑的命令Shared Libraries這項,可以添加庫路徑,比如調試過程中要步入外部函數,就必須在這裏給出帶調試信息的庫文件路徑,否則會找不到該函數的定義
Connection這項是關鍵:Type選 TCP,Host name or IP address填arm端的ip,端口號默認即可,這個端口號將在arm端運行gdbserver時填寫 - 所有配置完成,點Apple 再關掉配置頁
開始調試
在arm端運行程序
1. # tftp -g -r ipcam 192.168.1.100 //因爲這裏是用tftp共享文件,我用的是NFS,所以此句可以不用。
注:在arm端,也就是putty串口處,輸入gdbserver 192.168.30.68:10000 main .在eclipse 下載程序,然後就可以看到可以調試了。