vscode一般有三个配置文件,存放在.vscode文件夹下,分别是launch.json,settings.json和tasks.json
其中tasks.json主管编译过程,launch.json主管运行时环境,包括传入实参、路径等. settings.json是各种插件的配置,以及本地的配置,对应的是(工作区,本地,远端)中的本地,当然本地是具有相对意义的,这里指的啥当前运行环境的配置,级别低于工作区配置.
task.json
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc 生成活动文件",
"command": "/usr/bin/gcc",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: /usr/bin/gcc"
}
]
}
上述文件是从vscode->终端->配置默认生成任务 生成的
注意task是任务,launch是启动可执行文件的,但是一开始并没有可执行文件,只有代码,因此需要先运行tasks.json生成可执行文件,task里面的label字段,需要和launch中的preLaunchTask字段一致,这样才能保证找到相应的task.
command字段就是需要在命令行执行的命令,这里使用的是/usr/bin/gcc,算是指明了所用gcc的路径,一般来说,gcc也可不指定,这时用的是bash里面配置的默认gcc.
args就是命令的参数.是一个list,里面的选项都会添加到命令中,注意有一些宏配置,例如${file}指的就是当前文件的名称(包括路径). 如果需要添加编译时指令,就在这里加上.
下面的options选项字段,有一个cwd字段,就是工作路径.
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": []
}
上面是默认生成的launch文件,上面是默认生成的,没法直接用,也可以从运行->添加配置里面生成配置文件,生成如下
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
需要注意的是,program字段需要自己修改成相应的可执行文件的路径,这里修改为${fileDirname}/${fileBasenameNoExtension}
,此外还需要添加一个字段,即"preLaunchTask": " ",
这里的字段要和tasks里面的label对得上.
除此之外,注意到还没有添加调试应用,这里也需要添加上,即
"miDebuggerPath": "gdb",
因为已经配置了gdb环境变量,因此可以直接使用,否则要带路径.
启动时参数可以修改args,而environment则是传递给程序的环境变量.
宕开一笔,其实launch和task里面的configuration都是列表,也就是说在单个文件里面可以配置多个编译启动设置.然后这些编译和启动通过"preLaunchTask"
进行匹配.
下面给出一个基本上能用的配置文件
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc 生成活动文件",
"command": "/usr/bin/gcc",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: /usr/bin/gcc"
}
]
}
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动,配置1",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"preLaunchTask": "C/C++: gcc 生成活动文件",
"externalConsole": false,
"miDebuggerPath": "gdb",
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 att",
"text": "-gdb-set disassembly-flavor att",
"ignoreFailures": true
}
]
}
]
}