如何設定Code::Blocks遠端除錯Raspberry Pi

這篇文章的Host是Ubuntu 16.04 LTS,Target是Raspberry Pi 2 B-Type。主要說明如何在Code::Blocks 16.01上設定Coross Compiler及Remote Debug的相關選項。當設定成功後可以在Host上開發Target的Applications,充份利用Host的運算能力不再受限於開發板的速度。

 

1.在Host下載RPi官方提供的GitHub's Tools套件。 

 

2.在C::B的Settings\Compiler\開啟如下視窗,並依照相關Step操作設定。

Step1:設定一個新的Compiler選項。

Step2:從項1下載回來的Tools裏選定一個路徑,本例是使用4.9.3這個路徑下的工具組。

Step3:選好各個相關Program的名稱。

 

3.在C::B的Settings\Debugger\開啟如下視窗,並依照相關Step做操作設定。

Step1:選擇GDB/CDB Default項目,出現如下畫面。

Step2:選擇要執行的gdb程式完整路徑與名稱(預設完整路徑名稱是/usr/bin/gdb)。

 

4.產生新的C++ Project並寫好程式碼後,在Code::Blocks的Project\Properties\ 開啟如下視窗, 並依照相關Step做操作設定。

Step 1:切到Debugger頁面。

Step2:選擇Debug項目。

Step3:設定Target的IP與工作Port,未來Host Port要和此Port相匹配才能除錯。

 

5.基本上;上述4項動作完成也沒有發生錯誤的話,應該能在Host上Compiler出Target可執行的程式。

 

6.Host和Target的NFS分享與掛載可以參考此篇說明。當掛載完成後,Target可以直接在Console執行位於Host上的程式。

 

7.若Host有設防火牆,可利用其GUI程式將之關閉,以方便兩機間除錯。

 

8.將Host上;項1剛下載回來的Tools相關路徑下的gdbserver程式,拷貝到Target的/usr/bin/gdbserver下。如不知位置可以用sudo find / -name 'gdbserver'搜尋查找(我沒有copy過去也能正常除錯)。

 

9.先在Target上執行如下命令。

sudo gdbserver IP:Port ./程式名稱

接著就等Host的C::B連線進行除錯動作。 

用cat /proc/5882/maps 可看到AP使用記憶體狀況。

 

10.Step 1:在C::B按F5設置斷點。

Step 2:在Watches視窗設定要看的變數,此例為i。按F8開始除錯,程式會停在斷點上。

Step 3:按F7即可單步追踪,Shift+F7可Step Into 。

Step 4:Shift+F8停止除錯。 

 

 

 

目前這樣的設定可以除錯一般的Application,至於Kernel或Library或OpenCL的除錯還沒試,不曉得可不可行?到時再補充相關資訊。

沒有留言:

張貼留言