目标
要在Ubuntu 16.04
上面的vscode
去 debug C
,需要在vscode
上面去配置launch.json
以及task.json
。
像C
这种debug
,我们当然是希望每次都重新编译出来新文件再来debug
。
所以我们的流程就是 编译
- debug
。
工具
编译
需要用到 gcc
。
debug
需要用到 gdb
。
所以可以使用apt
安装上述包,建议顺带安装make
。
1sudo apt install gcc make gdb
生成默认 launch.json
在生成好的配置文件加入字段preLaunchTask
,该字段设置是指,在执行当前文件内容的时候先运行一些任务。
这样子的话,就可以先让他编译
,我们再来debug
。
1"preLaunchTask": "",
我们给这个新的task的名称是gcc build
。
而且需要更改下program
的值
1"program": "enter program name, for example ${workspaceFolder}/a.out",
改成
1"program": "${workspaceFolder}/a.out",
整个 launch.json
如下:
1{
2 // Use IntelliSense to learn about possible attributes.
3 // Hover to view descriptions of existing attributes.
4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 "version": "0.2.0",
6 "configurations": [
7 {
8 "name": "(gdb) Launch",
9 "type": "cppdbg",
10 "request": "launch",
11 "program": "${workspaceFolder}/a.out",
12 "args": [],
13 "stopAtEntry": false,
14 "cwd": "${workspaceFolder}",
15 "environment": [],
16 "externalConsole": false,
17 "MIMode": "gdb",
18 "preLaunchTask": "gcc build", //注意这里
19 "setupCommands": [
20 {
21 "description": "Enable pretty-printing for gdb",
22 "text": "-enable-pretty-printing",
23 "ignoreFailures": true
24 }
25 ]
26 }
27 ]
28}
生成 task.json
你的界面可能是英文,但是无所谓,中英文的意思都是一样的。
然后我们关注现在tasks.json的核心字段。
1"label": "echo", //标签,该任务的名字
2"type": "shell", //用什么来解析执行下面的那个command
3"command": "echo Hello" //命令
现在我们把他改一改。
1"label": "gcc build", //这里需要跟launch.json里面的preLaunchTask的值一致,不然无法调用到指定的task
2"command": "gcc", //gcc 来编译
3"args": [ //gcc的运行参数
4 "-g",
5 "${file}",
6 "-o",
7 "a.out"
8]
最终的tasks.json
如下:
1
2{
3 // See https://go.microsoft.com/fwlink/?LinkId=733558
4 // for the documentation about the tasks.json format
5 "version": "2.0.0",
6 "tasks": [
7 {
8 "label": "gcc build",
9 "type": "shell",
10 "command": "gcc",
11 "args": [
12 "-g",
13 "${file}",
14 "-o",
15 "a.out"
16 ]
17 }
18 ]
19}
其他问题
你还可能会遇到类似以下的问题
glibc
在Ubuntu16.04
上面报错。
1无法打开“ioputs.c”: 无法读取文件(Error: 找不到文件(vscode-remote://ssh-remote+xxxx/build/glibc-LK5gWL/glibc-2.23/libio/ioputs.c))。
提取问题的关键字段 — /build/glibc-LK5gWL/glibc-2.23/libio/ioputs.c
。
在这地方找不到glibc
,那么我们就给他下个。
1sudo su
2
3mkdir -p /build/glibc-LK5gWL/
4
5cd /build/glibc-LK5gWL/
6
7wget http://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
8
9tar zxvf glibc-2.23.tar.gz