前言

想当初刚刚学c语言时,看中了vscode编辑器,比dev-c++好用多了,但c/c++配置文件在网上到处抄过来都不对的痛苦我还历历在目。现在对各方面理解都更深了,所以写一下这篇文章

事先声明一下,vscode的版本在变,json文件的格式写法也在变,所以这里仅仅作为参考。如果在网上到处看的配置配不对的话,最后的办法就是到官网上看说明文档。

生成task.json、launch.json文件

首先要将你代码文件所在的文件夹在vscode中打开,不然是没法调试的

然后在左侧一栏中的调试中点击调试和运行

然后点解c++(GDB/LLDB)g++ 生成调试活动文件,然后不用管它运行了啥,直接点开.vscode文件夹,修改task.jsonlauch.json。其实,如果版本对应的话,从网上抄的这两个文件,然后按照正确的目录格式复制粘贴下来再改也是可以的(不用c++(GDB/LLDB)g++ 生成调试活动文件这两步了)。

修改launch.json

修改过程是一步一步的,如果这过程中你能调试了,那你就不用改了。当然,可能一开始什么都不用改就是对的。

这个里面最可能出错的是带有$+大括号的各种变量

这是最开始新生成的launch.json

最重要的是“program”参数,需要修改为你生成可执行文件的绝对路径(至少我用相对路径是失败了的)

然后“cwd”的参数是工作路径,也就是你当代码文件所在的路径,一般不会出问题,出问题了就都修改一遍

这是我的launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
// 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": "/home/nanodesu/桌面/everyday-learning2/2020-09-25/new_cpp",
"args": [],
"stopAtEntry": false,
"cwd": "/home/nanodesu/桌面/everyday-learning2/2020-09-25",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为gdb启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}

修改task.json

新生成的task.json

新生成的task

task.json一般不修改就能正常运行了。“cwd”就不用说了,“args”里的其实懂一点g++命令的一眼就看出来了,不懂的自行百度,如果要链接库或者其它选项按照格式往下加就行了

这里给出我的作为参考:

其中“lmysqlclient”是调用mysql C api所需的库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"tasks":[
{
"type": "shell",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args":[
"-g",
"new_cpp.cpp",
"-o",
"new_cpp",
"-lmysqlclient"

],
"options":{
"cmd": "${workspaceFolder}"
},
"problemMatcher":[
"$gcc"
],
"group":{
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"

最后

以上说的一个c/c++文件配置调试,加入一个文件夹有多个c++要调试而又不愿意调试一个文件改一次,那么,json文件中的变量$+大括号的含义就要搞清楚然后再写,当然,要是网上抄到了正确的json文件那自然更好Variables Reference

官方文档说的已经相当详细了,如果网上的抄不对那就多读读官方文档吧。