vscode调试c

配置c调试环境

之前也准备设置,但是看着网上的教程太长了,而且照着也没成功就放弃了。今天打算重新配置一遍。

简单配置

配置文件.vscode/launch.json。只需要配置好这个就ok了。

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
29
{
// 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": "gcc",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "${defaultBuildTask}",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}

最后的配置文件就是这样的。

其实没必要去照着网上的教程做,在点击debug的时候,那个选项没有配置好的,它会提醒,然后按照提示去官网找答案会更快。

  1. 首先是将后面有类似注释的删掉
  2. 然后他会提示preLaunchTask无效,将它设置为${defaultBuildTask}
  3. 还会提示gdb找不到,我以为linux默认已经安装了的,没想到真的没有安装,所以pacman -S gdb安装
  4. 设置好断点后,在重新运行debug就可以了

复杂一点的配置

前面这种配置已经可以了,只是每次debug的时候都需要选择build task。因为前面的"preLaunchTask": "${defaultBuildTask}"选择的是默认的,但是默认的为null,所以需要选择。可以配置默认的build task

配置文件.vscode/task.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}

上面的label为C/C++,所以launch.json中也要修改为这个,其他不变

1
"preLaunchTask": "C/C++",

这样设置之后点debug就可以直接运行了。

配置指定文件夹中

如果在一个文件夹下有不同的语言的文件夹,在vscode中需要进入到具体的某一个文件夹下在配置。因为配置文件会默认存在与主目录下,会造成相互覆盖。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
➜  code tree -a
.
├── c
│   ├── learn
│   ├── learn.c
│   ├── tempCodeRunnerFile
│   ├── tempCodeRunnerFile.c
│   └── .vscode //不同文件夹下的配置文件
│   └── launch.json
├── c++
│   ├── hello
│   ├── hello.cpp
│   ├── learn
│   ├── start
│   ├── start.cpp
│   ├── tempCodeRunnerFile.cpp
│   └── .vscode //不同文件夹下的配置文件
│   └── launch.json