cortex-A8 ARM核 opencv程序移植 (4)

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端。

    1. 編譯gdb
      在GNU官網下載最新版GDB ,我這裏下載的是7.2版本gdb-7.2.tar.gz
$ 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同目錄

    1. 編譯gdbserver
$ cd gdb/gdbserver
$ ./configure --host=arm-linux
$ make -j2
這裏沒有定義安裝目錄,因爲gdbserver是運行在嵌入式設備端的。
make之後,gdbserver程序就在當前目錄下,拷貝到tftpd目錄後在設備端通過tftp命令下載
  1. 調試程序
    通過加-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端調試

  2. gdb指令可真多,我不是牛人,自認沒那技術通過指令就能調試出想要的結果,結合eclipse的圖形調試界面快速尋找答案纔是我想要的。

介紹瞭如何編譯、運行arm-linux-gdb 和 gdbserver,這一篇中介紹怎樣結合Eclipse-cdt進行圖形化編譯調試

首先當然是使用CDT創建項目並添加源文件。

  1. 在左側 Project Explorer 的項目名上點右鍵->Properties 進入項目屬性設置
  2. 選擇 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

    其他選項默認就好,有需要自己修改



  3. [可選]Build Steps 這裏可以填些編譯步驟,我這裏希望編譯後自動將程序拷貝到tftpd的目錄以方便arm端直接下載
    那麼就在Post-build steps -> Command: 中填寫

    cp ipcam /tftpboot

編譯部分修改完,接下來是調試部分

  1. 選中項目->菜單欄 ”Run“->Debug Configurations…
  2. 雙擊C/C++ Applecation 新建一個配置,Eclipse會根據當前選擇的項目初始化大部分配置,這裏只需修改Debugger配置頁
  3. 選擇進入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時填寫
  4. 所有配置完成,點Apple 再關掉配置頁

開始調試

在arm端運行程序

1. # tftp -g -r ipcam 192.168.1.100
//因爲這裏是用tftp共享文件,我用的是NFS,所以此句可以不用。
 
  1. # gdbserver 192.168.1.100:10000 ipcam

    192.168.1.100是主機ip 10000是之前設定的端口

  2. 在Eclipse開始調試

 

 

注:在arm端,也就是putty串口處,輸入gdbserver 192.168.30.68:10000 main .在eclipse 下載程序,然後就可以看到可以調試了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章