为了更好的打开linuxc的大门,除了借助好的IDE外,还需要各种各样的利器提高效率。其中调试在我整个开发工作中占据非常非常重要的地位,要是没有调试我绝对会。以下记录一下我在vscode配置调试的相关操作。
一、安装cpptools
这个没什么好说的,直接在vscode安装一下这个插件就可以了。实在不会可以百度一下
二、编写launch.json
安装完后,按下F5快捷键启动调试,IDE会告诉你需要编写一个叫launch.json,现在简单说一下这个文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/oo",
"args": [],
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"preLaunchTask": "oo",
"linux": {
"miDebuggerPath": "/usr/bin/gdb",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"miDebuggerPath": "D:/MinGW/bin/gdb.exe",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
}
]
}
这里主要修改的内容主要有两个参数:
program,${workspaceRoot}/oo表示你要调试的程序
preLaunchTask,表示启动调试前的任务,目的启动前先进行编译并生成执行程序
三、编写tasks.json
继续按F5启动调试,IDE会告诉你缺少tasks任务,意思是调试过程要执行哪些任务。这里也是简单说明一下tasks.json。
{
"version": "0.1.0",
"command": "make",
"showOutput": "always",
"args": [
],
"tasks": [
{
"taskName": "clean"
},
{
"taskName": "oo",
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
],
}
"command":"make"是执行makefile的命令
"taskName":"oo"这里就是之前preLaunchTask定义的任务
四、编写makefile
CFLAGS = -g
objects=oo.o base/source/log.o \
util/file/source/file_operator.o \
util/file/source/ufile_operator.o
oo : $(objects)
cc -o $@ $^
..c.o:
cc $(CFLAGS) -c $<
.PHONY : clean
clean :
-rm -rf $(objects)
这里记录要加-g参数,不然不能命中断点。现在按F5就可以直接进入调试,效果如下图