根據VisualGDB官網(https://visualgdb.com)的幫助文檔大致翻譯而成。主要是作為個人學習記錄。有錯誤的地方,Robin歡迎大家指正。
本文演示如何使用VS來構建和調試Linux應用程序。
為了嘗試本文中的步驟,你需要一台Windows機器和一台Linux機器:
- 兩個物理電腦;
- 一個Windows電腦及運行在其上的Linux虛擬機(使用VIRTUALBOX/VMWARE);
- 一個Linux電腦及運行在其上的Windows虛擬機(使用VIRTUALBOX/VMWARE)。
為了使用VisualGDB創建、構建、調試一個簡單的Linux應用程序,需要遵循以下步驟。
1 下載安裝
下載並安裝最新的VisualGDB。
2 選擇項目類型
在Windows電腦上啟動VS,選擇”File->New project”,然后選擇”VisualGDB->Linux Project Wizard”,並設定項目位置后點擊”OK”:
3 選擇構建子系統
VisualGDB Linux項目向導啟動后,需要選擇構建子系統(build subsystems)。VisualGDB支持4中不同的構建子系統來創建Linux項目。本文選擇使用MSBuild子系統(對於大多數新建項目,推薦該子系統):

接下來分別介紹這4種子系統。
3.1 MSBuild
對於大多數項目來說我們推薦使用MSBuild,因為它能提供原生的感官風格。
VisualGDB MSBuild后端優化很大,能夠很快將文件傳遞到Linux機器上並構建它們。
MSBuild也能夠在Linux機器上處理所有的依賴。即便對於緩慢的網絡連接,也能夠減少延時。
3.2 CMake
如果你想不使用VS而直接在Linux機器上構建項目,可以參考系列文檔《使用VS創建CMake Linux項目》來創建一個基於CMake的項目。
3.3 Qt
如果你的項目使用Qt,可以選擇”Use Qt”來使用QMake。
3.4 GNU Make
如果你只是單純的想使用GNU Make,VisualGDB也能夠支持。它支持通過VisualGDB GUI來編輯Makefile文件,也能自動配置IntelliSense。
4 建立SSH連接
如果你之前從沒有創建過項目,在下一頁選擇”Create a new SSH connection”:

提供主機名,用戶名和密碼。推薦勾選”setup public key”復選框,勾選后,VisualGDB就可以自動產生一個public/private keypair,將其存儲到你Windows賬戶的key container中,並使用它來遠程連接Linux機器。
如果你沒有使能public key授權,VisualGDB將會記住這次連接的密碼。存儲的密碼使用一個key來加密,該key存儲在你Windows賬戶中。后面只有使用你的Windows賬號來登錄,該密碼才是可用的。
5 選擇工具鏈(toolchain)
如果你想使用不同的工具鏈(比如LLVM),可以在工具鏈列表中選擇。工具鏈列表的右側有個配置按鈕,使你能夠定制單獨的工具,比如編譯器。

也可以在這里選擇一個交叉編譯器,或者設定一個不同的部署機器。根據本頁面下方的圖表來檢查你的配置是否正確:
- 錘子圖標對應的是運行編譯器的機器;
- “Play”圖標對應的機器是,連接(launched)的被調試程序所在的機器。
6 測試工具鏈
點擊”Next”后,VisualGDB通過嘗試編譯並運行一個普通程序來測試你的工具鏈。如果這一步檢測出錯誤,可以看到詳細的錯誤日志及進一步的問題解決信息。

7 選擇源碼訪問方式
因為同一份代碼需要在Windows上編輯,然后在Linux上編譯,VisualGDB需要保持源碼同步。最簡單的方式是,通過SSH方式自動進行文件上傳。當然,VisualGDB能夠建立共享文件夾(需要root密碼)。

如果你使用CMake,還可以配置VisualGDB,從而能夠以SSH方式直接訪問Linux機器上的源碼,就像這些源碼存在於Windows上一樣。
8 完成項目創建
點擊”finish”完成創建向導。如果你是第一次使用這個Linux機器創建項目,VisualGDB將會對include目錄進行本地緩存,從而可以在IntelliSense中使用。

9 程序調試
恭喜,到這一步項目就創建成功了。現在可以構建你的項目,設置一個斷點,按F5開始調試程序了。

可以通過如下命令為遠程console切換黑/白主題:
Tools->Options->VisualGDB->General->GUI->use classic black and white color scheme for consoles
10 修改調試settings
Solution Explorer中,在項目上右鍵並選擇”VisualGDB Project Properties”,就可以修改各種調試settings了。
在VisualGDB Project Properties窗口中,你可以改變各種settings,也可以在configurations之間拷貝settings。在左邊的搜索框中,可以使用關鍵字來查找settings。

11 兩種方式修改項目的settings
有兩種方式修改項目的屬性,一種是VisualGDB提供的修改捷徑,另一種是在VS的屬性窗口中
11.1 在VisualGDB Project Properties中修改
對於一些類似”Include directories”這樣的通用配置,在”MSBuild Settings page”中VisualGDB提供了方便的修改捷徑:

11.2 在VS屬性窗口中修改
當然,也可以在常規的VS Properties中修改,既可以修改項目的屬性,也可以修改單個文件的屬性:

12 使用VisualGDB工具欄
在VS的菜單欄上右鍵單擊來使能VisualGDB工具欄。這將提供常用功能的快捷使用方式(比如,為下次程序運行改變程序的參數):

13 獲得精確的IntelliSense
VisualGDB使用准確的頭文件來獲得最精確的IntelliSense,這些頭文件來自Linux機器。每個遠程機器的頭文件都單獨緩存在” %LOCALAPPDATA%”下。

14 基於Clang的IntelliSense引擎
VisualGDB5.0及其后續版本包括一個基於Clang的IntelliSense引擎,能夠支持GNU C/C++擴展,比如結構體初始化列表:

15 支持”Create from use”和C/C++ code map
VisualGDB還支持一些特性,比如”Create from use”,詳細的C/C++ code map等。
嘗試調用一個不存在的函數時,會打開智能的tag菜單並選擇”Create function/method stub”:

VisualGDB將會自動檢測參數的類型,並讓你選擇一個地方來保存產生的函數stub:

