vscode launch.json和task.json配置(重要参数详解)

背景

开始前先说一下搞这个的原因,最早的时候看不懂json,后面在工作中有大量接触json的缘故,看这个json其实也就是一个key-value对,因为之前自己的编译器总是debug不了,就很难受,花了一个上午的时间深入研究了一下这个vscode的配置文件信息,也算是记录一下。

Tasks.json

按编译逻辑来说,先讲tasks.json

先贴图:

"label": 对应launch.json中的 "preLaunchTask";(一定要一致,决定了launch.json之前先运行哪个配置,tasks是一个array类型,里面理论来说可以存多个配置)

"command": 这个是编译器的命令,相当于选择了哪个编译器 (我配置了环境变量,所以这里是g++.exe,没有配置的话可能就需要按照 路径\\g++.exe来配置)

"args":编译器后面的命令,可以和command一起看 , 连起来简便看就是 g++ -g filename -o -finame.exe

这几个综合来说就是把一个.cpp文件编译成了一个可执行文件 .exe,这就是tasks.json的主要工作内容

launch.json

先贴图:

"preLaunchTask":在执行launch.json之前需要先执行task.json,对应tasks.json的"label",看哪个label和他匹配,就执行哪个task

"program":可执行的文件,相当于选择了哪个可执行文件等一下要去运行

"miDebuggerPath":调试程序路径,这里一定要选择gdb,因为他是debug的时候用的,博主之前以为他是选择用哪个编译器,然后用的一直都是gcc/g++ 所以一直有问题,后面纠正过来就好了。(他的路径参数就需要根据自己的mingw64/bin下的路径来填)

综合来说这个launch.json就是把一个可执行文件.exe 执行起来,可以运行也可以debug。

所以这两个文件结合一下就达到了把一个.cpp文件或.c文件(这里用的是g++编译器,所以是.cpp文件,如果需要编译.c文件,只需要再配置一个gcc编译器即可)先由tasks.json编译为可执行文件filename.exe/.out (或者直接-o filename 都是可以的),然后再由launch.json把一个.exe/.out 文件执行起来。

### 创建 `launch.json` 文件 为了在 Ubuntu 上配置 Visual Studio Code (VSCode) 进行调试,创建并正确配置 `launch.json` 文件至关重要。此文件用于定义启动调试应用程序所需的各项设置。 #### 基本结构 一个典型的 `launch.json` 文件可能看起来像这样: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 调试会话名称 "type": "cppdbg", // 使用 cppdbg 类型进行 C/C++ 调试 "request": "launch", // 请求类型为 launch 表示启动新进程 "program": "${workspaceFolder}/a.out", // 可执行文件路径 "args": [], // 向程序传递命令行参数 "stopAtEntry": false, // 是否停止于入口函数(main 函数) "cwd": "${workspaceFolder}", // 工作目录 "environment": [], // 设置环境变量 "externalConsole": true, "MIMode": "gdb", // 指定使用的调试器模式(gdb/lldb) "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build", // 执行构建任务前启动调试 "miDebuggerPath": "/usr/bin/gdb" // GDB 的安装位置 } ] } ``` 上述 JSON 片段展示了如何通过 `${workspaceFolder}` 其他预定义变量简化跨平台开发中的相对路径处理[^4]。 #### 关联 `tasks.json` 为了让调试更加顺畅,在同一项目根目录下的 `.vscode/tasks.json` 中也需要相应地设定编译指令以便自动生成带有调试信息的目标文件。例如: ```json { "version": "2.0.0", "tasks": [ { "label": "build", // 定义标签名为 build 的任务 "type": "shell", // shell 方式调用外部工具链 "command": "g++", // 编译器命令 "args": [ // 参数列表 "-g", // 添加调试信息标志 "-o", // 输出目标文件名 "${fileDirname}/${fileBasenameNoExtension}", "${file}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task" } ] } ``` 这段代码片段说明了如何利用 `-g` 选项确保生成的二进制文件包含必要的调试符号表,从而允许更有效的断点管理表达式求值操作[^3]。 当一切准备就绪之后,只需点击左侧边栏上的“Run and Debug”图标,选择已命名的调试方案 `(gdb) Launch` 即可开始调试过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值