以epoll-server项目为例,通过VSCODE编译并调试。
该形目由CMake构建,目标在该目录下生成build目录,通过CMake生成Makefile工程到build目录下,然后在build目录下执行make命令进行编译,最后通过VSCODE进行调试。
Build
-
代码目录
-
用VSCODE WSL模式打开该目录。
-
在.vscode文件夹下面创建task.json。
task.json
{
"version": "2.0.0",
"tasks": [
{
"label": "mkdir",
"type": "shell",
"command": "mkdir build -p"
},
{
"label": "cmake",
"type": "shell",
"command": "cmake -DCMAKE_BUILD_TYPE=debug ..",
"dependsOn": ["mkdir"],
"options": {
"cwd": "${workspaceFolder}/build"
},
},
{
"label": "make",
"type": "shell",
"command": "make -j4",
"options": {
"cwd": "${workspaceFolder}/build"
},
}
]
}
该文件包含三个task(task名字就是label):mkdir, cmake, make。
- mkdir: 命令
$ mkdir build -p
,在当前目录生成build文件夹。 - cmake:
dependsOn
表明执行该task之前会先调用mkdir这个task。cwd
表明切换到build目录下。命令$ cmake -DCMAKE_BUILD_TYPE=debug ..
,生成makefile工程到build文件夹。 - make:
cwd
表明切换到build目录下。 命令$ make -j4
, 进行编译。
- 在VSCODE中运行创建的这两个task(“cmake"和"make”)来进行编译。
Debug
在.vscode文件夹下面创建launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/src/app/epoll_server",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
将program
参数指定为编译好的可执行文件即可。