安装 vscode
1 2 3 4 5 6 7 8 9
| sudo apt update sudo apt install software-properties-common apt-transport-https curl
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt update sudo apt install code
|

配置环境
1
| sudo apt install build-essential gdb
|
安装插件
下载插件 C/C++

创建一个 cpp 文件,写入 c++ 代码,并进行 Debug C/C++ File
1 2 3 4 5 6 7 8 9
| #include<bits/stdc++.h>
using namespace std;
int main() { cout << "hello" << endl; return 0; }
|

选择 g++

此时在 .vscode 文件夹下会多出 tasks.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| { "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ build active file", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." } ], "version": "2.0.0" }
|
同时,终端输出 hello
按 Ctrl + Shift + P 在上方输入 configuration
找到 C/C++: Edit Configurations(JSON) 并点击

此时在 .vscode 目录下面会多出 c_cpp_properties.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "c17", "cppStandard": "gnu++17", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
|
点击左侧 Run and Debug 图标:
点击 create a launch.json file

选择 C++ (GDB/LLDB)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| { "version": "0.2.0", "configurations": [ { "name": "g++ - Build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++ build active file", "miDebuggerPath": "/usr/bin/gdb", } ] }
|
解决终端出现 [1] + Done “/usr/bin/gdb” —interpreter=mi —tty=${DbgTerm} 0<”/tmp/Microsoft-MIEngine-In-wyyxzchw.1pu” 1>”/tmp/Microsoft-MIEngine-Out-qddpshqk.bcg”
在 launch.json 的 configuration 中添加:

1
| "miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /usr/bin/gdb -q --interpreter=mi",
|
重新编译运行

最终,launch.json 内容为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| { "version": "0.2.0", "configurations": [ { "name": "g++ - Build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++ build active file", "miDebuggerPath": "/usr/bin/gdb", "miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /usr/bin/gdb -q --interpreter=mi", } ] }
|