VSCode C++ 单文件编译调试配置

591 字
3 分钟
VSCode C++ 单文件编译调试配置
刷算法题/竞赛时常用「单文件」工作流:打开一个 .cpp,按 F5 就编译并调试当前文件,不用建工程。下面是一套 VSCode 配置,放进工作区的 .vscode/ 即可,工具链为 Linux g++/gdb。
tasks.json
g++ 以 -std=c++23 -g 编译当前活动文件,产物输出到源文件同目录的 .vscode/.compile/;-O2(吸氧)和 -Wall 默认注释,需要时放开:
{ "tasks": [ { "type": "cppbuild", "label": "Main g++ 生成活动文件", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-std=c++23", // "-O2", // O2吸氧 "-g", //"-Wall", // 开启所有警告 "${file}", "-o", "${fileDirname}/.vscode/.compile/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true } } ], "version": "2.0.0"}关键项:
${file}:当前活动文件的完整路径。${fileDirname}:当前文件所在目录。${fileBasenameNoExtension}:当前文件名去掉扩展名(如a.cpp→a)。group.isDefault: true:设为默认构建任务,Ctrl+Shift+B直接触发。problemMatcher: ["$gcc"]:解析 gcc 的编译错误输出,Problems 面板里可点跳。
launch.json
gdb 调试上面编译出的产物,preLaunchTask 指向 tasks.json 的 label,按 F5 自动先编译再调试:
{ "configurations": [ { "name": "Main C++ 生成和调试活动文件", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/.vscode/.compile/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "internalConsoleOptions": "neverOpen", "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "preLaunchTask": "Main g++ 生成活动文件" } ], "version": "2.0.0"}关键项:
program:调试的目标程序,即上面 tasks.json 编译出的产物路径。preLaunchTask:调试前先执行的任务名,对应 tasks.json 里的label——「按 F5 自动先编译再调试」就是靠它串联的。MIMode: gdb/miDebuggerPath:用 gdb 作为调试器(MI 协议),并指定其路径。stopAtEntry: false:不在程序入口自动断下;设true会在启动时停在 main 第一行。externalConsole: false:不弹外部终端窗口,程序输出走 VSCode 的调试控制台(Debug Console);设true会另开一个控制台窗口。internalConsoleOptions: neverOpen:不自动切换到调试控制台,保持当前终端视图。
c_cpp_properties.json
IntelliSense 配置:告诉 C/C++ 扩展按哪个编译器、哪个标准解析代码,从而提供补全、跳转、诊断:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "/usr/bin/g++", "cStandard": "c17", "cppStandard": "c++23", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4}关键项:
compilerPath:IntelliSense 用来推断内置宏、头文件搜索路径的编译器(这里是/usr/bin/g++)。cppStandard: c++23:按 C++23 标准解析代码。intelliSenseMode: linux-gcc-x64:匹配 gcc 在 Linux/x64 下的语法与内置定义。includePath:头文件搜索路径,${workspaceFolder}/**表示从工作区根递归包含。
VSCode C++ 单文件编译调试配置
https://cialo.site/posts/coding/vscode-cpp-debug/













