vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

vscode中怎么遠(yuǎn)程gdb調(diào)試?下面本篇文章給大家介紹一下vscode遠(yuǎn)程gdb調(diào)試的方法,希望對大家有所幫助!

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

最近在同事的安利下,嘗試了用 vscode 做 gdb 調(diào)試,用完之后,“真香”。

話不多說,本文要實(shí)現(xiàn)的是:在 windows 端遠(yuǎn)程調(diào)試 linux 服務(wù)器和 arm 嵌入式設(shè)備上的 c++ 代碼,對 gdb 調(diào)試的配置及使用進(jìn)行一個整理。

1、遠(yuǎn)程連接

首先需要實(shí)現(xiàn)遠(yuǎn)程連接服務(wù)器,在插件庫中搜索 “remote-ssh”,雙擊下載安裝即可(下圖中我已安裝好),安裝好之后在側(cè)邊欄出現(xiàn)遠(yuǎn)程資源管理器。【推薦學(xué)習(xí):vscode教程vscode教程

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

點(diǎn)擊 + 號,在彈出的命令窗口中輸入 ssh 登陸指令,按照提示,輸入密碼并確認(rèn),即可連接成功

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

2、配置 GDB 環(huán)境

在服務(wù)端創(chuàng)建一個 c++ 代碼,這里以《vscode教程》中的代碼為例,很簡單

#include <unistd.h> #include <pwd.h> #include <iostream>   int main() { 	struct passwd* pwd; 	uid_t userid; 	userid = getuid(); 	pwd = getpwuid(userid);   	std::cout << "pw_name:" << pwd->pw_name << std::endl; 	std::cout << "pw_passwd:" << pwd->pw_passwd << std::endl; 	std::cout << "pw_uid:" << pwd->pw_uid << std::endl; 	std::cout << "pw_gid:" << pwd->pw_gid << std::endl; 	std::cout << "pw_gecos:" << pwd->pw_gecos << std::endl; 	std::cout << "pw_dir:" << pwd->pw_dir << std::endl; 	std::cout << "pw_shell:" << pwd->pw_shell << std::endl;       return 0; }

編譯方法如下,注意一定要加上 -g 指令,否則無法 gdb 調(diào)試

g++ -g test.cpp -o test

然后點(diǎn)擊 文件-打開文件夾,找到創(chuàng)建的代碼路徑,確定后,在左側(cè)的資源管理器可以看到代碼文件。

第一次運(yùn)行需要安裝 c++ 的擴(kuò)展,在擴(kuò)展頁面中,安裝 C/C++?

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

?同時搜索 GDB Debug 并安裝

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

?安裝好之后,點(diǎn)擊“運(yùn)行和調(diào)試”按鈕,“創(chuàng)建 launch.json” 文件,

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

?選擇 C++(GDB/LLDB)項(xiàng),自動生成 launch.json 文件,內(nèi)容如下

{     // 使用 IntelliSense 了解相關(guān)屬性。      // 懸停以查看現(xiàn)有屬性的描述。     // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387     "version": "0.2.0",     "configurations": [] }

按照下邊的內(nèi)容,對應(yīng)的修改一下

{     // 使用 IntelliSense 了解相關(guān)屬性。      // 懸停以查看現(xiàn)有屬性的描述。     // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387     "version": "0.2.0",     "configurations": [         {             "name": "(gdb) 啟動", //配置名稱,顯示在配置下拉菜單中             "type": "cppdbg", //配置類型             "request": "launch", //請求配置類型,可以是啟動或者是附加             "program": "${workspaceFolder}/test", //程序可執(zhí)行文件的完整路徑,${workspaceFolder}表示遠(yuǎn)程連接的初始路徑             "args": [], //傳遞給程序的命令行參數(shù)             "stopAtEntry": false,//可選參數(shù),如果為true,調(diào)試程序應(yīng)該在入口(main)處停止             "cwd": "${workspaceFolder}", //目標(biāo)的工作目錄             "environment": [], //表示要預(yù)設(shè)的環(huán)境變量             "externalConsole": false,//如果為true,則為調(diào)試對象啟動控制臺             "MIMode": "gdb",//要連接到的控制臺啟動程序             "setupCommands": [ //為了安裝基礎(chǔ)調(diào)試程序而執(zhí)行的一個或多個GDB/LLDB命令                 {                     "description": "為 gdb 啟用整齊打印",                     "text": "-enable-pretty-printing",                     "ignoreFailures": true                 }             ]         }     ] }

至此環(huán)境配置完畢

3、GDB 調(diào)試方法

在源代碼中直接點(diǎn)擊行數(shù)左側(cè),即可增加斷點(diǎn),設(shè)置好斷點(diǎn)之后,點(diǎn)擊“運(yùn)行和調(diào)試”–(gdb)啟動,如下

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

即可進(jìn)入調(diào)試頁面

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

可以在變量區(qū)直接看到變量值,完成調(diào)試目的。

常用的調(diào)試按鍵如下

F5? ? 開始調(diào)試F10? ?單步跳過F11? ?單步調(diào)試shift + F11? ?單步跳出ctrl + shift + F5? 重啟調(diào)試shift + F5? 停止調(diào)試

4、問題匯總

如果之前連接過某臺設(shè)備,后續(xù)更換設(shè)備是同一個IP,或者說設(shè)備重裝過系統(tǒng),但I(xiàn)P沒變,重連的時候會報錯,原因是主機(jī)將服務(wù)器 IP 列為known_host

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

?我們找到修改刪除該 IP 然后重連即可

vscode中怎么遠(yuǎn)程gdb調(diào)試?方法詳解

更多關(guān)于VSCode的相關(guān)知識,請訪問:vscode教程

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享