vscode配置task.json和launch.json启动调试

首先说一下参考博文:

文章标题“VScode 调试教程 tasks.json和launch.json的设置(超详细)
地址:https://blog.youkuaiyun.com/qq_59084325/article/details/125662393

官方文档太官方,其他人的文档也看过,单独都理解了,两个配置搭配就是没能启动调试,原来是相对路径的问题,今天看了一个超详细图片说明,加上C/C++的编译和使用的时间长了一点,就可以配置并调试了。


linux下的环境

  1. launch.json用于调试的启动,多个配置在启动处有下拉列表的
  2. task.json是编译配置,launch之前先自动编译

举例,配置两个调试
task.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "build rgba_to_yuv420.c",
            "command": "/usr/bin/gcc",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}/rgba_to_yuv420.c",
                "-I.",
                "-Iinclude",
                "-Llib",
                "-lyuv",
                "-o",
                "test-rgba_to_yuv420"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        },
        {
            "type": "cppbuild",
            "label": "build NV12 OVERLAY",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}/pixel_format_nv12_overlay.cpp",
                "${fileDirname}/pixel_format_nv12_overlay-test.cpp",
                "${fileDirname}/rgb_to_nv12.cpp",
                "-I.",
                "-o",
                "test-nv12_overlay"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

task.json主要就是配置编译命令。


launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "cppdbg",
            "request": "launch",
            "name": "Debug rgba_to_yuv420",
            "program": "${workspaceFolder}/test-rgba_to_yuv420",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "build rgba_to_yuv420.c",
            "MIMode": "gdb"
        },
        {
            "type": "cppdbg",
            "request": "launch",
            "name": "Debug NV12 overlay",
            "program": "${workspaceFolder}/test-nv12_overlay",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "build NV12 OVERLAY",
            "MIMode": "gdb"
        },
    ]
}

launch.json用于启动调试
在这里插入图片描述

配置文件中使用了内置变量,${fileDirname},${workspaceFolder}等等,因为涉及文件和路径,所以调试的时候注意相对路径

在上面两个配置文件中,workspaceFolder${fileDirname}的实际路径是一致。
源代码文件都位于项目的根目录。

在这里插入图片描述

所以调试启动时,当前打开文件或者左侧目录树中选中的文件需要是项目跟目录文件,才能正确启动编译和调试。

两个文件要相互依赖
在这里插入图片描述

<think>好的,我现在需要帮用户解决如何通过命令行运行VS Code中的tasks.jsonlaunch.json配置文件的问题。首先,我得回顾一下之前的对话历史,确保理解用户的需求。用户之前询问过如何通过命令行配置工作文件夹路径,现在进一步想通过命令行直接执行这些配置文件里的任务调试配置。 首先,我需要确认tasks.jsonlaunch.json的作用。tasks.json用于定义任务,比如编译、测试等,可以通过命令行调用这些任务。而launch.json主要用于调试配置,通常通过VS Code的调试界面启动,但用户希望用命令行来触发这些调试配置。 接下来,我得查阅用户提供的引用资料。引用[3]提到在launch.json中设置preLaunchTask来关联tasks.json中的任务,确保任务在调试前运行。这说明tasks.json的任务可以通过命令行执行,而launch.json调试可能需要其他方法。 用户的需求是使用命令行执行这两个配置文件中的内容。对于tasks.json,可能直接使用code命令配合任务名称。比如,code --run命令可以运行特定任务。但需要确认是否支持。引用[4]中的示例tasks.json里的任务"Build"使用shell命令,所以可能在命令行中调用。 对于launch.json,问题更复杂,因为调试通常需要IDE的环境。但VS Code是否支持命令行启动调试配置?可能需要查看文档。如果没有直接支持,可能需要变通方法,比如通过脚本触发调试会话,或者使用扩展的API。 另外,用户可能希望自动化这些流程,比如在CI/CD中运行任务或调试。这时候需要确保命令行方法能在无头模式下运行,可能需要使用VS Code的扩展如'vscode-task-runner'或者编写自定义脚本。 还需要考虑不同操作系统的兼容性,比如在Windows、macOSLinux下命令是否有差异。比如,在Windows中使用cmd或PowerShell,命令可能需要转义字符。 可能的步骤是:首先通过code --run运行tasks中的任务,然后尝试通过命令行参数启动调试配置。如果不行,可能需要使用扩展或编写脚本。另外,用户可能需要结合工作区设置,确保路径正确,避免相对路径的问题。 最后,总结方法,分点说明如何通过命令行执行tasks.json的任务,以及可能的调试配置方法,同时提醒用户可能的限制,比如调试需要图形界面支持,或者某些任务可能需要特定环境变量。</think>### 通过命令行执行VSCode配置文件的完整方法 --- #### 一、执行tasks.json中的任务 1. **通过`code`命令直接运行任务** 使用以下命令格式调用tasks.json中定义的任务(需指定任务`label`): ```bash code --folder-uri /your/workspace/path --run <任务名称> ``` 示例:执行`tasks.json`中标签为`Build`的编译任务: ```bash code --folder-uri ~/my_project --run Build ``` 该命令会触发任务中定义的`command`(如`cargo build`或`g++`编译指令)[^3][^4]。 2. **结合路径参数精准定位** 若需强制指定工作目录,添加`--folder-uri`参数: ```bash code --folder-uri file:///c:/projects/demo --run TestTask ``` 此方式适用于多工作区场景,避免路径混淆。 3. **通过扩展实现自动化(推荐)** 安装`vscode-task-runner`扩展后,可直接通过终端调用: ```bash vscode-task-runner run Build ``` 此工具提供更友好的命令行交互[^1]。 --- #### 二、触发launch.json调试配置 1. **使用调试标识符启动** 通过`--exec`参数调用调试配置名称: ```bash code --folder-uri . --exec DebugProgram ``` 其中`DebugProgram`需与`launch.json`中`name`字段完全匹配[^3]。 2. **结合preLaunchTask联动执行** 若调试配置包含`preLaunchTask`(如编译任务),命令行执行调试时会自动触发关联的tasks.json任务: ```bash code --debug <调试配置名称> ``` 例如: ```bash code --debug "C++ Launch" ``` 系统将先执行`preLaunchTask`定义的编译流程,再启动调试器[^3]。 --- #### 三、高级场景解决方案 1. **无头模式运行(Headless)** 使用`vscode-test`库实现无界面自动化: ```bash npx @vscode/test-electron --extensionDevelopmentPath=. --launch-config=TestDebug ``` 适用于CI/CD流水线中的自动化测试[^2]。 2. **通过SSH远程执行** 在远程服务器上触发本地配置: ```bash ssh user@host "code --folder-uri /remote/path --run Deploy" ``` 需提前配置SSH远程开发环境[^1]。 --- #### 四、注意事项 1. **路径规范** 使用绝对路径避免歧义(如`/projects/app`而非`./app`),尤其是在跨平台场景中。 2. **权限控制** 在Linux/macOS中需确保终端用户对工作目录有读写权限: ```bash sudo chown -R $USER /your/project ``` 3. **环境变量继承** 若任务依赖环境变量,需通过`env`字段显式声明: ```json // tasks.json "options": { "env": { "PATH": "/custom/toolchain/bin:${env:PATH}" } } ``` --- ### 相关问题 1. 如何通过命令行参数覆盖tasks.json中的变量? 2. VSCode远程开发模式下如何执行本地配置? 3. 调试配置如何在无图形界面环境下运行?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值