task.json

  • 编译代码的设置
    在这里插入图片描述

task.json外部参数

tasks

  • 类型:数组
  • 含义:可以定义多条任务(例如一条C编译,一条Cpp编译
  • 数组中的每一个对象,代表一条可以独立执行的任务

“version”:"2.0.0"j

  • 固定配置规范版本号,不用修改

task.json内部参数

“type”:“cppbuild”

  • 任务类型
  • cppbuild是微软C/C++扩展专属任务类型
  • 作用:让C/C++插件接管这条任务

“label”:“C/C++: g++.exe”

  • 任务唯一名称
  • 与launch.json里的preLaunchTask的值必须一样
  • 调试运行前,VScode依靠Label找到对应的编译任务

“command”:“外部编译器路径”

  • 将要执行的外部程序路径
  • C++ 代码 → 使用 g++.exe(自动链接 C++ 标准库:cout、cmath、string 等)
  • C 语言代码 → 使用 gcc.exe

“args”:[…]

  • 传递给command程序的命令行参数数组
  • 等价于CMD手动执行命令:g++.exe -fdiagnostics-color=always -g test.cpp -o test.exe

“options”:{“cwd”:“${filename}”}

  • options = 执行这条编译命令时的环境配置
  • cwd = 当前工作目录

“problemMatcher”:[“$gcc”]

  • 错误捕获匹配器·

$gcc 是 VSCode 内置规则:
自动解析 g++/gcc 输出的报错信息,提取文件名、行号、错误原因,展示在编辑器左侧问题栏,点击直接跳转到出错代码行。
固定写法,无需改动。

“group”:{“kind”:“build”, “isDefault”:true}

  • options = 执行这条编译命令时的环境配置

“kind”: “build”
归类为【构建/编译任务】,Ctrl+Shift+B 调出编译任务列表时显示

“isDefault”: true
标记为默认编译任务
按下 Ctrl+Shift+B 可以直接快速执行这条任务

“detail”: “调试器生成的任务。”

纯展示文本,只在 VSCode 任务下拉列表显示,不参与程序执行,可以删除或者随便修改

launch.json

在这里插入图片描述

顶层字段

“version”: “0.2.0”

  • launch 配置文件规范版本,固定,不要修改

“configurations”: [ {…} ]

  • 数组,可以写多套调试方案(比如一套调试 C、一套调试 C++),每一个{}代表一套调试配置。

内部配置项

“name”: “C/C++ Runner: Debug Session”

  • 配置显示名称
    左侧调试面板下拉框展示的文字;你可以随便改名,例如改成 调试C++程序。

“type”: “cppdbg”

  • 调试器类型
  • cppdbg = VSCode 官方 C/C++ 扩展调试类型(适配 MinGW gdb),固定写法,不用改。

“request”: “launch”

  • 启动模式,两种可选:
  • launch:全新启动程序调试(我们日常写代码 99% 用这个)
  • attach:附加到已经正在运行的进程上调试(逆向、排查死锁才用,初学不用)

“args”: []

  • 程序运行时传入命令行参数
    • 例如程序需要输入 ./a.exe 100 hello,就写成:“args”: [“100”, “hello”]
  • 目前空数组 = 不给程序传参数。

“stopAtEntry”: false

  • 是否在 main 函数第一行自动暂停
  • true:按下 F5,程序直接停在main这一行
  • false:直接正常运行,遇到断点才停下

“externalConsole”: true

  • 是否弹出独立黑色控制台窗口(非常关键!)
  • true:单独弹出 cmd 黑窗口,适合 cin、scanf 键盘输入
  • false:程序嵌入 VSCode 内置终端运行,部分情况下 cin 输入容易出问题

“cwd”: “c:/Users/jia21/Documents/Obsidian Vault/game”

  • cwd = 当前工作目录(Current Working Directory)
  • 程序运行时认为自己所在的文件夹。
  • 如果你代码里读取相对路径文件,程序会以这个目录为基准寻找文件。

“program”: “c:/Users/…/outDebug”

  • (最重要)要调试的可执行程序路径
  • 告诉 gdb:我要调试哪一个 exe 程序。
  • 缺点:你现在是硬编码绝对路径,切换代码文件直接失效!
  • 之前我们 tasks 配套方案使用变量:
  • “program”: “${fileDirname}\${fileBasenameNoExtension}.exe”

“MIMode”: “gdb”

  • 指定调试后端程序是 gdb。
  • MinGW 环境固定填gdb,MSVC 编译器才用别的。

“miDebuggerPath”: “gdb”

  • gdb 调试器程序位置
  • 现在只写了"gdb",代表去系统环境变量 PATH 寻找 gdb.exe;
  • 如果你没有配置系统环境变量,会找不到调试器直接报错。

“setupCommands”: [ … ]

  • 启动 gdb 之后,自动预先执行的调试命令
    json
    {
    “description”: “Enable pretty-printing for gdb”,
    “text”: “-enable-pretty-printing”,
    “ignoreFailures”: true
    }

enable-pretty-printing:美化打印 STL 容器(vector、string、数组正常展开查看,不会显示原始内存)
ignoreFailures: true:如果这条命令 gdb 不支持,忽略错误,继续调试

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐