寫這篇文章的目的在於幫助那些既要使用Visual Studio編寫程序又要開發和調試嵌入式Linux 程序的苦命程序員們! html
第一步, 安裝 WinGDB ,下載位置 http://www.wingdb.com/ ,鏈接是http://www.wingdb.com/WinGDB-latest_trial.msi 30天試用版在30天后 卸載掉, 刪除全部gdb相關的註冊表, 而後從新安裝, 就又可使用30天, 安裝過程以下圖示: linux
一、選擇贊成許可協議 程序員
二、若是你機器上裝了足夠多的VS版本, 你均可以選擇, 主要看你用那個版本的VS redis
三、若是你僅做遠程Linux開發 , 則選第一項, 若是你要作嵌入式系統開發, 選擇第二項, 若是你想所有要, 則選第三項 , 咱們這裏固然是選擇第三項了。 ubuntu
第二步、建立WinGDB項目 服務器
一、新建WinGDB項目,選擇Multiplatform executable app
二、選擇第一項, 咱們要進行遠程開發,源碼在構建在遠程服務器上, 調試也一樣在遠程主機上, 經過TCP/IP鏈接並使用SSH協議來訪問這些機器。 ssh
三、選擇第二項, gdb 和交叉編譯環境在一臺服務器上, 遠程調試在另一臺機器上, 這臺機器能夠是arm linux 也能夠是其餘支持gdbserver 的機器。 函數
四、填寫gdb和編譯環境的ssh地址和用戶名密碼 以及 gdbserver 所在的用戶名密碼和IP地址。 ui
五、惦記Browse 選擇咱們事先編譯好的 gdb 調試器,這是運行在編譯環境那臺服務器上的gdb , 用來控制 gdbserver 的 , gdb和gdbserver必須是對應的。
六、選擇本地源碼和遠程的源碼的同步方式, 這個根據狀況來選擇, 若是你是共享的, 擇選第一項, 若是須要同步, 則選第二項, 若是不須要同步, 則選第三項, 如圖:
七、選擇遠程文件路徑和本地文件路徑:
八、設置編譯 命令, 和編譯目錄, 這些目錄在點擊browse時都是列出的編譯服務器上的目錄
九、選擇遠程調試的目標目錄 , 如圖:
十、選擇額外和附加的源碼文件和庫 ,這步直接跳過, 若是你有須要, 則能夠再這裏設置。
十一、設置調試啓動參數 ,與此同時, 建議把Stop in main 去掉, 這樣避免每次啓動程序時, 都要在main 函數哪裏停下來。 如圖:
十二、配置完成, 如圖:
個人配置內容以下:
Project build command: make
Project rebuild command: make clean; make
Project clean command: make clean
Project deploy command:
Build working directory: /root/ct/src/
Build environment variables: BUILD_CONFIGURATION="Debug"
Build before start debugging: Build project
Deploy before start debugging: yes
Deploy action: Transfer file to target
Deploy only if file changed: yes
Files to deploy: /root/ct/src//EMRCV4
Deploy target directory: /mnt/EMRCV4/BIN
Core file path:
Working directory: /mnt/EMRCV4/BIN
Arguments:
Environment variables:
Stop in main(): no
Target specification:
Server mode: Launch executable
Executable on target: /mnt/EMRCV4/BIN/EMRCV4
Launch GDB server automatically: yes
Launch server from sysroot: no
Path to gdbserver: /usr/bin/gdbserver
Server port: 2345
Server port is forwarded: no
Forwarded server port: 0
Executable path: /root/ct/src//EMRCV4
Byte order: Little endian
Initialization script:
Additional source directories:
Debug info directory:
Sysroot on host:
Sysroot on target:
Shared library directories:
Visualizer profile:
Load sources from build host: no
Disable hang reporter: no
Debugger path: /usr/bin/arm-unknown-linux-gnueabi-gdb
Build toolchain paths:
Intercept standard IDE commands: yes
Target type: Linux indirect debugging (SSH+remote target)
Debug host login: root@192.168.50.178:22
Build host login: root@192.168.50.178:22
Debug target login: root@192.168.50.58:22
至此完成項目的調試和編譯配置
第三部、代碼映射配置
此時輸出窗口中會輸出以下內容:
-------------------------------------------------------------------------------- Transfer to remote host(s) --------------------------------------------------------------------------------
Errors were encountered during preparation: No files could be copied.
Could not map the path: D:\Works\RHY\Toll\Trunk\src\FunctionAssembly\Lane\EMRCV4\EMRCV4.vcxproj to remote filesystem. Use 'Map source directories' option to setup a mapping.
若是出現, 則打開代碼映射窗口
而後在下面添加一個Login , 再選擇添加一個映射, 如圖:
下面是編譯時的效果, 因爲編譯器錯誤等級緣由, 第一次編譯會有不少錯, 第二次編譯則錯誤消失 ,
如圖:
調試時 , 啓動時會彈出下面的窗口, 點肯定便可, 不用理會
下面是調試過程的狀況, 能夠查看運行時當前進程的局部變量和鼠標下面的變量值, 這個跟VS同樣, 也能夠單步執行。
第四步:頭文件引用 , 上圖中你能夠看到不少常量和函數都有紅線, 是由於VS找不到對應的頭文件, 所以須要繼續作些設置。
打開項目屬性, 選中配置屬性, 選中VC++目錄,而後在包含目錄中加入 交叉編譯環境中的頭文件,好比:
D:\Works\Linux\toolchain_R2_EABI\usr\arm-unknown-linux-gnueabi\sysroot\usr\include
而後, 你須要把你全部頭文件的目錄所有添加在這裏, 若是頭文件目錄比較多, 就比較費勁。
設置完後你會看到VS正在解析頭文件, 設置後效果以下:
最後, 若是嚮導設置有問題或者沒有保存, 多是因爲不是管理員權限的緣由, 所以你可能須要檢查下你的配置,
方法以下圖:
常規設置 debug host 和 build host 同樣
環境中設置調試器路徑
調試選項中, 要選擇好生產的可執行文件 和 在 目標機器上的 應用程序工做目錄
調試目標
gdbserver 設置
下面一步很關鍵, 是項目生成設置, 生成目錄必須和路徑映射中的路徑一直, 不然報錯的錯誤沒法定位文件位置,
第七欄中設置 調試前生成項目, 第八項設置調試前須要部署, 第十項設置 部署操做爲傳送文件至目標,
第十一項選擇是, 當文件改變則部署, 第十二項決定要部署的文件, 第五項是 要部署的文件位置。
結束語
另外編譯arm 相關的gdbserver 和 gdb在之後的文章中也會介紹到!這篇文章就不作介紹了。 若是gdb和gdbserver 不一致, 則一樣會沒法調試
下面是個人gdbserver 的版本信息:
[192.168.50.58:/mnt/EMRCV4/BIN]# gdbserver --version
GNU gdbserver (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
gdbserver is free software, covered by the GNU General Public License.
This gdbserver was configured as "arm-unknown-linux-gnueabi"
[192.168.50.58:/mnt/EMRCV4/BIN]#
下面是gdb的版本信息
root@ubuntu:/usr/bin# arm-unknown-linux-gnueabi-gdb
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-unknown-linux-gnueabi".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
注意, 必定要注意 This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-unknown-linux-gnueabi".
若是不一致, 一樣會編譯失敗的。
至此徹底配置完畢,在稍後的幾天裏, 我會根據狀況來補充和完善這篇文章, 若有興趣, 請繼續關注吧!