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,这能帮助你了解此处参数和属性到底有那些、有什么意义。