VScode的task与launch学习笔记
task部分
task的作用
VS Code 中的任务可以配置为运行脚本和启动进程,这样许多现有工具可以在 VS Code 中使用,而无需输入命令行或编写新代码
创建task
ctrl+shift+P,搜索task。
创建task的时候有很多模板可供选择,最好使用自定义task,也就是other,虽然需要花时间去了解构建task的知识,但是这样可以完全掌控自己想要的功能。
task参数配置
!!!一定要学会使用下面两个法!!!:
- CTRL + SPACE:用来显示光标位置处可以使用的属性,或者参数。
- 把鼠标放在属性上:显示属性的意义。
//一种task配置,只含有部分属性配置,作为示例
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Run tests",
"type": "shell",
"command": "./scripts/test.sh",
"windows": {
"command": ".\\scripts\\test.cmd"
},
"group": "test",
"presentation": {
"reveal": "always",
"panel": "new"
}
}
]
}
| taks的属性 | 属性的含义 |
|---|---|
| label | 任务的标签名 |
| type | 将要执行的认为属性,shell表示命令,process表示进程 |
| command | 要执行的命令 |
| args | 命令的参数 |
| group | 定义任务所属的组,用来归类,多任务执行 |
| presentation | 定义如何在用户界面处理任务输出 |
| problemMatcher | 问题匹配器,用来输出警告和错误,例如$go匹配go编译器报告的问题 |
| option | 覆盖cwd(当前工作目录)、env(环境变量)或shell(默认shell)的默认值 |
| runOption | 定义任务运行的时间和方式 |
| dependsOn | 指定任务执行时候依赖于那些其他设置的指令 |
| dependsOrder | 指定所依赖的任务执行的顺序 |
| window | window下的特定属性 |
| Linux | Linux下的特定属性 |
| osx | mac下的特定属性 |
| isBackground | 执行的任务是否保持活动并在后台运行。 |
| promptOnClose | 当 VS Code 因正在运行的任务而关闭时是否提示用户。 |
| key | 设定任务快捷键 |
| 预定义变量名字 | 预定义变量意义 |
|---|---|
| ${workspaceFolder} | 在 VS Code 中打开的文件夹的路径 |
| ${workspaceFolderBasename} | 在 VS Code 中打开的文件夹的名称,不带任何斜线 (/) |
| ${file} | 当前打开的文件 |
| ${fileWorkspaceFolder} | 当前打开的文件的工作区文件夹 |
| ${relativeFile} | 当前打开的文件相对于workspaceFolder |
| ${relativeFileDirname} | 当前打开的文件的目录名workspaceFolder |
| ${fileBasename} | 当前打开的文件的基本名称 |
| ${fileBasenameNoExtension} | 当前打开的文件的基本名称,没有文件扩展名 |
| ${fileDirname} | 当前打开的文件的目录名 |
| ${fileExtname} | 当前打开的文件的扩展名 |
| ${cwd} | 启动时任务运行器的当前工作目录 |
| ${lineNumber} | 活动文件中当前选定的行号 |
| ${selectedText} | 活动文件中当前选定的文本 |
| ${execPath} | 运行 VS Code 可执行文件的路径 |
| ${defaultBuildTask} | 默认构建任务的名称 |
| ${pathSeparator} | 操作系统用于分隔文件路径中的组件的字符 |
参考资料
- VSCode task.json讲解:https://code.visualstudio.com/docs/editor/tasks#vscode
- VSCcde 预定义变量讲解:https://code.visualstudio.com/docs/editor/variables-reference
launch部分
launch的作用
launch.json用来保存VSCode调试的配置信息,启动配置中可用的属性因调试器而异。
launch的创建方法
- 点击右侧栏的”Run and debug“,然后点击创建launch 文件
- F5 选择调试,间接生成launch文件
launch的参数配置(C++的GDB调试配置)
{
// 一个创建c++(GDB调试器)模板,示例
// 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": [
{
"name": "g++ - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ 生成活动文件",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
| launch的属性 | 属性的含义 |
|---|---|
| type | 用于此启动配置的调试器类型 |
| request | 此启动配置的请求类型,,launch(以调试模式开始)和attach(在运行过程中附加调试) |
| name | 显示在调试启动配置下拉列表中的易于阅读的名称。 |
| presentation | 如何显示调试的信息,使用order,group和hidden 属性 |
| preLaunchTask | 要在调试会话开始之前启动任务,请将此属性设置为task.json中指定的任务标签 |
| postDebugTask | 要在调试会话的最后启动任务,请将此属性设置为task.json中指定的任务标签 |
| internalConsoleOptions | 此属性控制调试会话期间调试控制台面板的可见性 |
| program | 启动调试器时要运行的可执行文件或文件 |
| args | 传递给程序以进行调试的参数 |
| environment | 环境变量(该值null可用于“取消定义”变量) |
| envFile | 带有环境变量的 dotenv 文件的路径 |
| cwd | 用于查找依赖项和其他文件的当前工作目录 |
| stopAtEntry | 是否在进入短点前停止 |
| externalConsole | 是否允许外部中端,不允许的话就是用liunx和window自己的中端 |
| MIMode | 所连接的调试器名字 |
| setupCommands | 执行一个或多个 GDB/LLDB 命令以设置底层调试器。 |
| miDebuggerPath | 调试器的位置 |
复合launch配置
启动多个调试会话的另一种方法是使用复合启动配置。复合启动配置列出了应该并行启动的两个或多个启动配置的名称。preLaunchTask可以选择指定在启动各个调试会话之前运行的 。
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Server",
"program": "${workspaceFolder}/server.js"
},
{
"type": "node",
"request": "launch",
"name": "Client",
"program": "${workspaceFolder}/client.js"
}
],
"compounds": [
{
"name": "Server/Client",
"configurations": ["Server", "Client"],
"preLaunchTask": "${defaultBuildTask}"
}
]
}
注意:compounds与 task并列的
参考资料
- https://code.visualstudio.com/docs/editor/debugging#_launch-configurations
launch与test文件使用过程
我的理解:你在test文件种设置各种指令,这些指令完成对程序的编译连接等等,然后在launch种设置调试指令。每次调试的时候会先执行test任务然后在执行launch命令,从而完成编译后调试。而具体如何用指令来对c++程序进行编译,则需要进一步学习,也就是说,这两个文件的编写,可以大大简化以后要进行的重复性工作,但也仅仅只有这个帮助。至于c++程序在linux下如何编译、编译有哪些参数、在 基于VSCode和CMake实现C/C++开发 | Linux篇有一些介绍。在使用的过程一定要使用好CTRL+SPACE,这能帮助你了解此处参数和属性到底有那些、有什么意义。
本文详细介绍了VSCode中的任务(task)和launch配置,包括如何创建任务、配置参数、预定义变量,以及launch配置用于调试的不同场景,教你利用它们提高开发效率。
6795

被折叠的 条评论
为什么被折叠?



