配置介绍主要以Linux系统为例,调试工具选择gdb
在某些情况下程序莫名其妙挂掉,这时候通过打日志等一些方式更难可以快速定位问题的位置,所以这个时候往往需要调试来定位问题比如利用调式中的调用堆栈查看程序挂掉的具体位置
配置步骤:配置CMake生成任务json→配置运行和调式json→执行编译并调式
配置CMake生成任务json
首先需要VSCode先一个配置json文件,点击终端选择
之后将下面的配置json代码替换到tasks.json中
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": ["-DCMAKE_BUILD_TYPE=Debug", ".."],
"options": {
"cwd": "/root/projects/CCVOD/CCVODServer/build"
},
},
{
"label": "make",
"type": "shell",
"command": "make",
"args": [],
"options": {
"cwd": "/root/projects/CCVOD/CCVODServer/build"
},
},
{
"label": "build",
"dependsOn":["cmake", "make"]
},
],
}
重要配置参数说明
-
cwd 指定该脚本的工作目录,这里建议使用绝对路径
-
command 指定要执行的任务
-
args 指定执行任务后面的参数
-
dependsOn 执行依赖项,表示当用户执行该任务时所依赖需要提前执行的任务(自动执行)
按照自己的项目把上面的配置写好就可以进行CMake编译了
执行过程和输出会在下面状态栏中显示
配置运行和调式json
配置完上面的工作就可以使用VSCode来编译代码了,但是还不能进行代码运行和调试
首先还是让VSCode生成一下调试运行json配置,点击运行和调试然后点击创建launch.json文件,之后就会得到一个默认的配置文件
下面的json配置代码是适用于Linux下gdb调试
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "code debug",
"type": "cppdbg",
"request": "launch",
"program": "/root/projects/CCVOD/CCVODServer/bin/Debug/httpServer.out",
"args": ["-DB", "dropDB"],
"stopAtEntry": false,
"cwd": "/root/projects/CCVOD/CCVODServer/src/",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
重要配置参数说明
-
program 要执行的可执行文件路径,还是建议使用绝对路径
-
args 执行程序后面带的参数,没有可以不写
-
preLaunchTask 指定开始前需要执行的任务,这里指定了上面的构建编译任务
-
miDebuggerPath 调试工具所在路径
上面的两步全部配置完后就可以测试是否可以使用了
在代码中打个断点,按下F5运行程序,如果断点成功触发就证明上面的配置没有问题
需要注意的是,只有debug模式生成的可执行文件才可以进行调式,release版本是不能进行调试的
最后介绍一个CMake语法,可以将不同模式下的输出文件生成到不同的目录下
SET(RELEASE_OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin/Release) # release模式文件输出路径
SET(DEBUG_OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug) # debug模式文件输出路径
# 设置 Debug 和 Release 构建类型的不同输出路径
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${DEBUG_OUT_PATH})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${DEBUG_OUT_PATH})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${DEBUG_OUT_PATH})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${RELEASE_OUT_PATH})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${RELEASE_OUT_PATH})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${RELEASE_OUT_PATH})
到这里关于VSCode配置CMake工程编译和调试就介绍完了
感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!