Vscode 中launch.json与tasks.json文件

Vscode 中launch.json与tasks.json文件

launch.json文件

launch.json 文件是 Visual Studio Code (VS Code) 中用于配置调试会话的文件。它定义了调试器如何启动和运行程序。以下是 launch.json 文件的详细配置说明,包括常见的属性及其用途。

基本结构

launch.json 文件通常位于 .vscode 目录下,具有以下基本结构:

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            // 配置块
        }
    ]
}

主要属性

每个配置块代表一个调试配置,包含多个属性。以下是一些常见属性的说明:

  • type : 调试器类型,如 python, cppdbg, node, java, 等。
  • request : 调试请求类型,通常为 launch(启动)或 attach(附加)。
  • name: 配置名称,用户可以在调试配置列表中看到。
  • program: 要调试的程序路径或文件。
  • args: 传递给程序的命令行参数,数组形式。
  • cwd: 当前工作目录。
  • env: 环境变量设置。
  • sourceMaps: 是否启用源映射(通常用于 JavaScript 调试)。
  • preLaunchTask: 调试前要执行的任务(通常用于编译等)。
  • postDebugTask: 调试结束后要执行的任务。
  • stopOnEntry: 是否在程序入口处停止。
  • console : 控制台类型,如 integratedTerminal, externalTerminal, 或 internalConsole
  • justMyCode: 是否只调试用户代码(用于 Python)。
  • pythonPath: Python 可执行文件的路径(用于 Python)。

示例配置

以下是一些常见语言的 launch.json 配置示例:

Python
json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}
C++
json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++: g++ build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "g++ build active file",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerArgs": "",
            "stopAtEntry": false,
            "logging": {
                "moduleLoad": false,
                "programOutput": false,
                "trace": false,
                "traceResponse": false
            },
            "windows": {
                "MIMode": "gdb",
                "miDebuggerPath": "gdb.exe"
            },
            "osx": {
                "MIMode": "lldb"
            },
            "pipeTransport": {
                "pipeProgram": "",
                "pipeArgs": [],
                "debuggerPath": "/usr/bin/gdb",
                "pipeCwd": ""
            },
            "sourceFileMap": {
                "/mnt/c": "c:\\",
                "/mnt/d": "d:\\"
            }
        }
    ]
}
Node.js
json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": ["<node_internals>/**"],
            "program": "${workspaceFolder}/app.js"
        }
    ]
}

常见配置项

1. Python
  • program: 要调试的 Python 文件。
  • pythonPath: Python 解释器路径。
  • args: 传递给 Python 脚本的命令行参数。
  • env: 环境变量。
  • console: 控制台类型。
2. C++
  • program: 可执行文件路径。
  • args: 命令行参数。
  • stopAtEntry: 是否在程序入口处暂停。
  • cwd: 当前工作目录。
  • environment: 环境变量。
  • externalConsole: 是否使用外部控制台。
  • MIMode : 调试器模式(如 gdb, lldb)。
  • miDebuggerPath: 调试器路径。
3. Node.js
  • program: 要调试的 Node.js 文件。
  • args: 命令行参数。
  • runtimeExecutable: Node.js 可执行文件路径。
  • runtimeArgs: 传递给 Node.js 的参数。
  • env: 环境变量。
  • sourceMaps: 是否启用源映射。
  • outFiles: 编译输出文件路径。

使用示例

假设我们有一个 Python 项目,并且我们希望配置一个调试会话,可以这样写:

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

这个配置会使用当前打开的 Python 文件作为程序入口,运行调试,并在 VS Code 的集成终端中显示输出。

通过理解和正确配置 launch.json 文件,可以极大地提高调试效率和开发体验。不同语言和不同项目可能需要不同的配置,用户可以根据具体需求进行调整。

tasks.json

tasks.json 文件是 Visual Studio Code (VS Code) 中用于配置任务(Tasks)的文件。这些任务可以是编译代码、运行测试、构建项目等自动化任务。以下是 tasks.json 文件的详细配置说明,包括常见的属性及其用途。

基本结构

tasks.json 文件通常位于 .vscode 目录下,具有以下基本结构:

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            // 任务配置块
        }
    ]
}

主要属性

每个任务配置块代表一个任务,包含多个属性。以下是一些常见属性的说明:

  • label: 任务的名称或标签,用于在任务列表中标识任务。
  • type : 任务类型,例如 shellprocessshell 表示任务将在 shell 中运行,process 表示任务将作为独立的进程运行。
  • command: 要执行的命令,可以是编译器、构建工具、脚本等。
  • args: 传递给命令的参数,数组形式。
  • group : 任务分组,可以设置为 buildtest,用于标识构建任务或测试任务。
  • presentation: 控制任务输出的呈现方式,例如是否显示在终端中,是否清除之前的输出等。
  • problemMatcher: 配置错误和警告的匹配器,用于从任务输出中解析错误和警告。
  • options: 任务执行的选项,例如环境变量、当前工作目录等。

示例配置

以下是一些常见的 tasks.json 配置示例:

C++ 编译任务
json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.out"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"],
            "detail": "Generated task for building a C++ file using g++"
        }
    ]
}
Python 运行任务
json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run Python file",
            "type": "shell",
            "command": "python",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            "problemMatcher": []
        }
    ]
}
Node.js 运行任务
json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run Node.js file",
            "type": "shell",
            "command": "node",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            "problemMatcher": []
        }
    ]
}

常见配置项

  1. label

任务的标签名称,用于在 VS Code 任务列表中标识任务。

json 复制代码
"label": "build"
  1. type

任务类型,可以是 shellprocessshell 表示任务将在 shell 中运行,process 表示任务将作为独立的进程运行。

json 复制代码
"type": "shell"
  1. command

要执行的命令,例如编译器、脚本或构建工具。

json 复制代码
"command": "g++"
  1. args

传递给命令的参数,数组形式。

json 复制代码
"args": [
    "-g",
    "${file}",
    "-o",
    "${fileDirname}/${fileBasenameNoExtension}.out"
]
  1. group

任务分组,用于标识任务的类别,可以是 buildtest

json 复制代码
"group": {
    "kind": "build",
    "isDefault": true
}
  1. presentation

控制任务输出的呈现方式。

json 复制代码
"presentation": {
    "echo": true,
    "reveal": "always",
    "focus": false,
    "panel": "shared"
}
  1. problemMatcher

用于解析任务输出中的错误和警告。VS Code 内置了多种匹配器,例如 $gcc, $eslint 等。

json 复制代码
"problemMatcher": ["$gcc"]
  1. options

任务执行的选项,例如环境变量、当前工作目录等。

json 复制代码
"options": {
    "cwd": "${workspaceFolder}"
}

使用示例

假设我们有一个 C++ 项目,并且我们希望配置一个编译任务,可以这样写:

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.out"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"],
            "detail": "Generated task for building a C++ file using g++"
        }
    ]
}

这个配置会使用 g++ 编译当前打开的 C++ 文件,并将输出文件放在相同目录下,文件名与源文件相同但扩展名为 .out

通过理解和正确配置 tasks.json 文件,可以极大地提高构建和运行任务的自动化和效率。不同语言和不同项目可能需要不同的配置,用户可以根据具体需求进行调整。

tasks.json与launch.json文件的区别

tasks.jsonlaunch.json 是 Visual Studio Code (VS Code) 中用于配置不同类型任务的文件,它们各自有不同的用途和配置方式。

tasks.json

tasks.json 用于配置和管理各种任务,例如编译代码、运行脚本、构建项目等。它定义了一些可以自动执行的任务,主要用于自动化构建、测试和其他开发流程。

主要功能和用途

  1. 编译代码:如编译 C++ 或 Java 代码。
  2. 运行脚本:如执行 Python 或 Shell 脚本。
  3. 构建项目:如使用构建工具(Make、Gradle、Maven)构建项目。
  4. 其他任务:如清理生成文件、打包等。

主要属性

  • label: 任务的名称或标签。
  • type : 任务类型,例如 shellprocess
  • command: 要执行的命令。
  • args: 传递给命令的参数。
  • group : 任务分组,可以设置为 buildtest
  • presentation: 控制任务输出的呈现方式。
  • problemMatcher: 配置错误和警告的匹配器。
  • options: 任务执行的选项,例如环境变量、当前工作目录等。

示例

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.out"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}

launch.json

launch.json 用于配置调试器的启动和运行参数。它定义了调试配置,主要用于在调试会话中启动程序、附加到正在运行的程序等。

主要功能和用途

  1. 启动调试会话:配置调试器如何启动程序。
  2. 附加调试:配置调试器如何附加到正在运行的程序。
  3. 设置断点和观察点:调试过程中设置断点和观察点。

主要属性

  • type : 调试器类型,如 python, cppdbg, node, java 等。
  • request : 调试请求类型,通常为 launch(启动)或 attach(附加)。
  • name: 配置名称,用户可以在调试配置列表中看到。
  • program: 要调试的程序路径或文件。
  • args: 传递给程序的命令行参数。
  • cwd: 当前工作目录。
  • env: 环境变量设置。
  • sourceMaps: 是否启用源映射(通常用于 JavaScript 调试)。
  • preLaunchTask: 调试前要执行的任务(通常用于编译等)。
  • postDebugTask: 调试结束后要执行的任务。
  • stopOnEntry: 是否在程序入口处停止。
  • console : 控制台类型,如 integratedTerminal, externalTerminalinternalConsole
  • justMyCode: 是否只调试用户代码(用于 Python)。

示例

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}

主要区别

  • 用途

    • tasks.json:用于配置和管理自动化任务(如编译、构建、运行脚本等)。
    • launch.json:用于配置调试器,定义调试会话的启动和运行参数。
  • 配置内容

    • tasks.json:定义要执行的任务及其参数和选项。
    • launch.json:定义调试会话的参数和选项,包括要调试的程序、调试器类型、启动或附加模式等。
  • 工作流

    • tasks.json:适用于日常开发中的重复任务,自动化构建和测试流程。
    • launch.json:适用于调试代码,启动调试会话或附加到正在运行的程序。

结合使用

在许多情况下,tasks.jsonlaunch.json 可以结合使用。例如,可以在 launch.json 中定义一个调试配置,并在调试前执行一个由 tasks.json 配置的编译任务:

json 复制代码
// launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++ Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}
json 复制代码
// tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.out"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}

这样,当你启动调试会话时,VS Code 会先执行 tasks.json 中定义的编译任务,然后再启动调试。

相关推荐
Diligently_5 天前
idea 中vm option 配置
java·ide·intellij-idea
我命由我123455 天前
在 Android Studio 中,新建 AIDL 文件按钮是灰色
android·ide·android studio·安卓·android jetpack·android-studio·android runtime
Hello World . .5 天前
Linux:线程间通信
linux·开发语言·vscode
AC赳赳老秦5 天前
云原生AI故障排查新趋势:利用DeepSeek实现高效定位部署报错与性能瓶颈
ide·人工智能·python·云原生·prometheus·ai-native·deepseek
被制作时长两年半的个人练习生5 天前
claude code for vscode 配置 qwen3.5
ide·vscode·claude code·qwen3.5
圣心5 天前
Visual Studio Code 中的 AI 智能操作
ide·人工智能·vscode
吹牛不交税5 天前
关于vscode左侧资源管理器目录层级疑似异常的问题
ide·vscode·编辑器
xixi09245 天前
selenium IDE安装使用教程
ide·selenium·测试工具
嵌入小生0075 天前
线程间通信---嵌入式(Linux)
linux·c语言·vscode·嵌入式·互斥锁·线程间通信·信号量
上海合宙LuatOS5 天前
LuatOS核心库API——【json 】json 生成和解析库
java·前端·网络·单片机·嵌入式硬件·物联网·json