使用VS GDB擴充套件在VS上遠端偵錯Linux上的C/C++程序
在 Linux 上開發 C/C++ 程序,或許你會直接(本機或遠端)登入 Linux,打開編輯器寫完代碼后,就用 gcc/g++ 來編譯,遇到要除錯(debug)的時候,則會選擇使用 gdb 來進行除錯。現在,如果你剛好也很喜歡 Visual Studio,你可以不必改變習慣,用 Visual Studio 寫程式、然后遠端送到 Linux 上編譯、甚至還能接上 gdb 來除錯。這個對于開發像是嵌入式系統、或是 IoT 裝置的程序等等就可以多多利用 Visual Studio 強大的 IDE 能力。
圖: 應該有不少在 Linux 上寫程式的開發人員是這么工作的吧?
如何做?
首先,你必須使用 Visual Studio 2015,你可以使用免費版[1]的 Visual Studio 2015 Community 或是其它更高等級的版本,記得在安裝時要勾選 Visual C++ 以及 C++ 跨平臺行動開發這兩個元件:
圖: 安裝 Visual C++
然后只要再安裝 Visual Studio GDB Debugger 這個擴充套件,就能夠在 Visual Studio 的 Visual C++ > 跨平臺的項目類型中選擇 Makefile Project (GDB) 的項目范本。
圖: 在 Visual Studio 中建立 Makefile Project (GDB)
建立項目后,啟始畫面就會有簡單的說明如何連接遠端的 GDB 來進行除錯,照著做應該就沒有什么大問題了。會用到與 SSH 相關的工具可以到 PuTTY 的網站上下載相關的工具。
圖: 使用 VS GDB 擴充套件的教學
首先在項目上按右鍵選擇內容,設定偵錯的環境,像是遠端主機的位址、然后認證用的 pub/private key,還有連接的方式(ssh 或 plink)等等,這里要注意的是連接服務器是使用 RSA 的公私鑰的方式進行認證,所以你必須先產生一組 RSA 金鑰,然后在 Linux 主機上放好公鑰,然后這里設定是用私鑰去驗證(圖中的 .ppk 檔桉)。
圖: 設定遠端主機連線的資訊
然后就是設定在編譯程序時要如何把程式上傳到目標的 Linux 機器上,然后用機器上的 gcc/g++ 來進行編譯,切換到 NMake 的設定頁,設定建置指令:
圖: 設定如何將程式丟上遠端主機并且進行編譯
這里我的設定值是:
d:\tools\pscp.exe -i $(PrivateKey) "D:\Temp\Project1\Project1\main.cpp" $(RemoteUserName)@$(RemoteHostName):$(RemoteWorkingDirectory)/main.cpp
$(SecureShellExecutable) $(RemoteUserName)@$(RemoteHostName) -i $(PrivateKey) "cd $(RemoteWorkingDirectory);g++ -g main.cpp -o $(RemoteExecutable)"
這里我是用 pscp 把檔案傳上 Linux 主機上后,再用 g++ 來進行編譯,其它的變數都是前面設定的值,你可以根據你的工具以及檔檔案所在位置做修改。
接下來你就可以開始撰寫程序了,然后就像在 Visual Studio 里寫其它程序一樣設定中斷點,但是執行時選擇 Remote GDB 就可以開始進行遠端偵錯了。
圖: 啟動遠端主機的 gdb 來除錯,但結合 Visual Studio 的偵錯介面
看起來就好像都是在 Visual Studio 中的除錯畫面,但是這個代碼確實已經送上 Linux 主機進行編譯,并且使用 gdb 來進行偵錯了!
原始文章發布于「開發者之魂」部落格
來自: 「開發者之魂」部落格