Eclipse-cdt 配合 gdbserver 进行 arm 程序远程调试
生活随笔
收集整理的這篇文章主要介紹了
Eclipse-cdt 配合 gdbserver 进行 arm 程序远程调试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編譯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
編譯gdbserver
$ cd gdb/gdbserver
$ ./configure --host=arm-linux
$ make -j2
這里沒有定義安裝目錄,因為gdbserver是運行在嵌入式設備端的。
make之后,gdbserver程序就在當前目錄下,拷貝到tftpd目錄后在設備端通過tftp命令下載
調試程序
通過加-g參數 交叉編譯帶調試信息的程序 gdb指令可真多,我不是牛人,自認沒那技術通過指令就能調試出想要的結果,結合eclipse的圖形調試界面快速尋找答案才是我想要的。
在左側 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: 中填寫 選中項目->菜單欄 ”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端運行程序 # tftp -g -r ipcam 192.168.1.100
# gdbserver 192.168.1.100:10000 ipcam 在Eclipse開始調試
轉自:
http://bashell.sinaapp.com/archives/eclipse-cdt-gdbserver-arm-remote-debugging-1.html
http://bashell.sinaapp.com/archives/eclipse-cdt-gdbserver-arm-remote-debugging-2.html
看上一個并沒有完全搞定,找了下一個才能用eclipse 遠程高度 最近需要使用gdb 遠程調試程序,遠程計算機運行系統為debian4.0,調試主機系統是ubuntu10.04.
使用gdb命令調試也可以,但近期一直在eclipse cdt下工作,這些項目工程什么的統統搞在eclipse工作目錄下了。這樣使用gdb命令行不是很方便,于是有了這次的研究。
開始以為直接在eclipse cdt工程屬性里面把debuuger中改為gdbserver debugger就可以了,發現改完了調試基本不行,好多問題。于是繼續放狗,網上的資料比較零散,而且有很多都是側重arm等平臺交叉編譯后remote debug的,我這里貌似都不用toolchain什么的,這倆系統基本一致,源碼在調試機器寫完去遠程主機編譯一下就可以。
經過一上午的整理,發現有幾個關鍵點需要注意一下:
1.首先,對于這種遠程調試的應用最好有個共享的文件系統,這樣做起來比ftp,telnet什么的方便很多,我就是先在兩臺機器上弄好了nfs,然后使用共享把項目直接建立在共享目錄下工作的。
ubuntu和debian貌似缺省安裝都不帶nfs,升級一下,調試主機作為nfs server,遠程計算機mount上來。
2.eclipse cdt項目建立一定要選stadard makefile項目,別用那個managered的,這樣才方便,反正我是沒搞懂怎么把manangered項目搞到遠程調試。而且即使是makefile項目也要檢查下makefile文件,記得把-o編譯選項刪了,反正是debug,優化不優化無所謂,而且一旦有這個優化選項,就會發現好多斷點斷不到,編譯器把這個優化后斷點有時工作不正常。
項目建立無非是兩種途徑:第一次就是現在nfs共享目錄下建立個makefile項目,然后就開始工作吧,編輯完代碼一定記得在遠程主機make一下;第二種就是導入項目,這里需要注意,這個導入別使用File-import菜單,直接還是建立makefile工程,location自己選,指向要導入項目路徑,項目名稱留空,然后繼續,eclipse自己就會分析目錄下的makefile文件并導入相應文件。(這里插一句,像需要不同平臺的再導入后選擇一下可執行文件的類型)。
3.具體調試步驟,遠程機gdbserver ip:端口 進程? ,調試主機eclipse配置debugger時選擇 GDB(DSF)
remote process laucher啟動程序,記得gdbserver debugger選項頁下正確配置遠程機ip和端口,F11,啟動調試。
這樣一個調試環境就建立好了,而且這個環境只存在于調試主機里,遠程機(被調試)到時只需mount到特定調試主機nfs目錄就可以了,調試主機更改后只需要eclipse里重新導入一遍項目到nfs共享目錄,調試環境
的兩端都可以方便的建立起來。
轉 http://hi.baidu.com/bobbeta/blog/item/8822db0ad218a8980a7b8236.html
做嵌入式Linux開發也不用再羨慕windows程序員VS集成開發環境的強大,我們同樣能夠搭建出給力的IDE。
今天在這里記錄一下我使用Eclipse-cdt,gdb,gdbserver搭建遠程arm調試的過程。
首先介紹下,嵌入式Linux的GDB調試環境由Host和Target兩部分組成,Host端可以理解為本機,Target端為嵌入式設備。
Host端使用arm-linux-gdb,Target 端使用gdbserver。
調試時,應用程序在嵌入式目標系統上通過運行,而gdb調試在Host端。
在GNU官網下載最新版GDB?,我這里下載的是7.2版本gdb-7.2.tar.gz
可以通過export命令將/home/aliang/arm-gdb/bin目錄加入PATH,使arm-linux-gdb可以直接使用,也可以直接拷貝到/usr/bin 或arm-linux-gcc同目錄
通過加-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端調試
首先當然是使用CDT創建項目并添加源文件。
其他選項默認就好,有需要自己修改
那么就在Post-build steps -> Command: 中填寫
cp ipcam /tftpboot
編譯部分修改完,接下來是調試部分
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時填寫
開始調試
192.168.1.100是主機ip 10000是之前設定的端口
http://bashell.sinaapp.com/archives/eclipse-cdt-gdbserver-arm-remote-debugging-2.html
看上一個并沒有完全搞定,找了下一個才能用eclipse 遠程高度 最近需要使用gdb 遠程調試程序,遠程計算機運行系統為debian4.0,調試主機系統是ubuntu10.04.
使用gdb命令調試也可以,但近期一直在eclipse cdt下工作,這些項目工程什么的統統搞在eclipse工作目錄下了。這樣使用gdb命令行不是很方便,于是有了這次的研究。
開始以為直接在eclipse cdt工程屬性里面把debuuger中改為gdbserver debugger就可以了,發現改完了調試基本不行,好多問題。于是繼續放狗,網上的資料比較零散,而且有很多都是側重arm等平臺交叉編譯后remote debug的,我這里貌似都不用toolchain什么的,這倆系統基本一致,源碼在調試機器寫完去遠程主機編譯一下就可以。
經過一上午的整理,發現有幾個關鍵點需要注意一下:
1.首先,對于這種遠程調試的應用最好有個共享的文件系統,這樣做起來比ftp,telnet什么的方便很多,我就是先在兩臺機器上弄好了nfs,然后使用共享把項目直接建立在共享目錄下工作的。
ubuntu和debian貌似缺省安裝都不帶nfs,升級一下,調試主機作為nfs server,遠程計算機mount上來。
2.eclipse cdt項目建立一定要選stadard makefile項目,別用那個managered的,這樣才方便,反正我是沒搞懂怎么把manangered項目搞到遠程調試。而且即使是makefile項目也要檢查下makefile文件,記得把-o編譯選項刪了,反正是debug,優化不優化無所謂,而且一旦有這個優化選項,就會發現好多斷點斷不到,編譯器把這個優化后斷點有時工作不正常。
項目建立無非是兩種途徑:第一次就是現在nfs共享目錄下建立個makefile項目,然后就開始工作吧,編輯完代碼一定記得在遠程主機make一下;第二種就是導入項目,這里需要注意,這個導入別使用File-import菜單,直接還是建立makefile工程,location自己選,指向要導入項目路徑,項目名稱留空,然后繼續,eclipse自己就會分析目錄下的makefile文件并導入相應文件。(這里插一句,像需要不同平臺的再導入后選擇一下可執行文件的類型)。
3.具體調試步驟,遠程機gdbserver ip:端口 進程? ,調試主機eclipse配置debugger時選擇 GDB(DSF)
remote process laucher啟動程序,記得gdbserver debugger選項頁下正確配置遠程機ip和端口,F11,啟動調試。
這樣一個調試環境就建立好了,而且這個環境只存在于調試主機里,遠程機(被調試)到時只需mount到特定調試主機nfs目錄就可以了,調試主機更改后只需要eclipse里重新導入一遍項目到nfs共享目錄,調試環境
的兩端都可以方便的建立起來。
轉 http://hi.baidu.com/bobbeta/blog/item/8822db0ad218a8980a7b8236.html
總結
以上是生活随笔為你收集整理的Eclipse-cdt 配合 gdbserver 进行 arm 程序远程调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于寄存器的定义__REG
- 下一篇: Qt QString 中文 char*