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教程】
點(diǎn)擊 + 號,在彈出的命令窗口中輸入 ssh 登陸指令,按照提示,輸入密碼并確認(rèn),即可連接成功
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++?
?同時搜索 GDB Debug 并安裝
?安裝好之后,點(diǎn)擊“運(yùn)行和調(diào)試”按鈕,“創(chuàng)建 launch.json” 文件,
?選擇 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)啟動,如下
即可進(jìn)入調(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
?我們找到修改刪除該 IP 然后重連即可
更多關(guān)于VSCode的相關(guān)知識,請訪問:vscode教程!