VS-code下调试的launch.jsion文件和task.jsion文件
·
VS Code 调试中的 launch.json 文件
launch.json 是 VS Code 用于配置调试环境的文件,位于项目根目录的 .vscode 文件夹中。它定义了如何启动和调试程序。
核心配置字段
type: 调试器类型,如"node"(Node.js)、"python"(Python)等。request: 调试请求类型,常用"launch"(启动新程序)或"attach"(附加到已运行程序)。name: 调试配置的名称,显示在调试下拉菜单中。program(或"file"):指定入口文件路径,如"${workspaceFolder}/app.js"。args: 传递给程序的命令行参数数组。env: 环境变量键值对,如{"NODE_ENV": "development"}。
示例(Node.js)
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "启动 Node 程序",
"program": "${workspaceFolder}/app.js",
"args": ["--port=3000"],
"env": {
"DEBUG": "true"
}
}
]
}
VS Code 调试中的 tasks.json 文件
tasks.json 用于定义自动化任务(如构建、测试),通常与 launch.json 配合使用。例如,调试前需编译代码时,可通过任务预先执行编译。
核心配置字段
label: 任务名称,需唯一。type: 任务类型,如"shell"(命令行任务)或"process"。command: 执行的命令(如"npm"、"gcc")。args: 命令参数,如["run", "build"]。group: 任务分组,常用"build"或"test"。isBackground: 是否为后台任务(需配合"problemMatcher")。
示例(TypeScript 编译任务)
{
"version": "2.0.0",
"tasks": [
{
"label": "tsc 编译",
"type": "shell",
"command": "tsc",
"args": ["-p", "tsconfig.json"],
"group": "build",
"problemMatcher": ["$tsc"]
}
]
}
launch.json 与 tasks.json 的协作
通过 "preLaunchTask" 字段,可在调试前自动运行指定任务。例如:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "调试 TypeScript",
"program": "${workspaceFolder}/dist/app.js",
"preLaunchTask": "tsc 编译"
}
]
}
此时调试会先执行 tasks.json 中标签为 "tsc 编译" 的任务,再启动调试。
注意事项
- 路径变量:
${workspaceFolder}:项目根目录。${file}:当前打开的文件。
- 调试扩展:确保安装对应语言的调试扩展(如
ms-vscode.js-debug)。 - 问题排查:若任务未触发,检查
label是否匹配preLaunchTask,或通过Terminal > Run Task手动测试任务。
例子:
{
"version": "0.2.0",
"configurations": [
{
// 配置名称,VSCode 调试面板显示的名字
"name": "(gdb) Bash on Windows Launch",
// 调试类型,C++ 调试器
"type": "cppdbg",
// 启动方式
"request": "launch",
// 要调试的可执行文件路径(WSL 路径)
"program": "/mnt/d/study/pa/work/cart_pole/Cart-Pole-main2-class/cart_pole.exe",
// 传递给程序的命令行参数
"args": [],
// 是否在程序入口处暂停
"stopAtEntry": true,
// 传递给 gdb 的额外参数(一般为空)
"miDebuggerArgs": "",
// 调试时的工作目录(WSL 路径)
"cwd": "/mnt/d/study/pa/work/cart_pole/Cart-Pole-main2-class/",
// 环境变量设置
"environment": [],
// 是否使用外部终端
"externalConsole": false,
// 源文件路径映射(WSL 路径 <-> Windows 路径)
"sourceFileMap": {
"/mnt/d/study/pa/work/cart_pole/Cart-Pole-main2-class": "D:\\study\\pa\\work\\cart_pole\\Cart-Pole-main2-class"
},
// pipeTransport 用于在 Windows 下通过 bash 调用 gdb
"pipeTransport": {
// gdb 路径(WSL 内)
"debuggerPath": "/usr/bin/gdb",
// 用于调用 bash 的 Windows 路径
"pipeProgram": "${env:windir}\\system32\\bash.exe",
// 传递给 bash 的参数
"pipeArgs": [
"-c"
],
// bash 的工作目录
"pipeCwd": ""
},
// 调试器启动时执行的命令
"setupCommands": [
{
// 启用 gdb 的漂亮打印
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
// 设置反汇编风格为 Intel
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
},
{
// 跳过 std 命名空间下的标准库函数
"description": "防止 gdb 打开标准库函数",
"text": "-interpreter-exec console \"skip -rfu std::.*\"",
"ignoreFailures": false
}
],
// 符号加载设置
"symbolLoadInfo": {
"loadAll": false,
"exceptionList": ""
},
},
]
}
只需要修改对应路径名称就行。其他不用改,也不需要task.jsion文件
更多推荐



所有评论(0)