这里调试分为2中C++项目:
- 不带cmake的项目
- 带cmake的项目
1,不带cmake的项目
比较好的参考连接为:Linux环境下vscode调试C/C++_禾仔仔的博客-CSDN博客_linux vscode调试c++
1.1 新建源文件
1.2 创建launch.json和task.json文件
launch.json可以点击Run start debug(F5),根据提示创建。该文件的 作用为启动编译好的可执行文件,设定启动的相关参数。如果已经编译好,设定好launch.json文件后可以直接运行debug。模板如下,如已经编译好,需删除"preLaunchTask": "build",。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"preLaunchTask": "build", //调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
"name": "(gdb) Debug", //配置文件的名字,可以随便起
"type": "cppdbg", //调试的类型,Vscode现在支持很多,我这里主要是C,所以只能是cppdbg
"request": "launch", //配置文件的请求类型,有launch和attach两种,具体看官方文档
"targetArchitecture": "x64", //硬件内核架构,为64bit,如图设置
"program": "${workspaceFolder}/${fileBasenameNoExtension}", //可执行文件的路径和文件名称
"args": [], //主函数调用时传入的参数
"stopAtEntry": false, //设为true时程序将暂停在程序入口处
"cwd": "${workspaceFolder}", //调试时的工作目录
"environment": [], //不知道干嘛的
"internalConsoleOptions": "openOnSessionStart",
"externalConsole": false, //调试时是否显示控制台窗口
"MIMode": "gdb", //指定连接的调试器,可以省略不写
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
1.3 创建好launch.json文件后,点击Run start debug(F5),会提示找不到build task,因此需创建定义build task的task.json文件。模板如下。如果是C++,gcc换成g++。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build", // 任务名称,与launch.json的preLaunchTask相对应
"type": "shell",
"command": "gcc", // 要使用的编译器
"args": [
"${file}",
"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
"${fileDirname}/${fileBasenameNoExtension}",
"-g", // 生成和调试有关的信息
"-Wall", // 开启额外警告
], // 编译命令参数
"group": {
"kind": "build",
"isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件
},
"presentation": {
"echo": true,
"reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档
"focus": true, // 设为true后可以使执行task时焦点聚集在终端
"panel": "new" // 不同的文件的编译信息共享一个终端面板
},
// Use the standard MS compiler pattern to detect errors, warnings and infos
"problemMatcher": "$msCompile"
}
]
}
1.4 源文件设置断点,点击Run start debug(F5),可实现调试。
2, 有cmake的C/C++项目
较好的参考连接:使用VSCODE生成调试Linux下C++的CMake项目_wx61b2dc8417c4b的技术博客_51CTO博客
2.1 创建task.json,实现mkdir build, cmake.. , make 三个命令。
{
"version": "2.0.0",
"tasks": [
{
"label": "mkdir",
"type": "shell",
"command": "mkdir build -p"
},
{
"label": "cmake",
"type": "shell",
"command": "cmake -DCMAKE_BUILD_TYPE=debug ..", // cmake编译必须为debug模式,否则后续不能实现断点调试。
"dependsOn": ["mkdir"],
"options": {
"cwd": "${workspaceFolder}/build"
},
},
{
"label": "make",
"type": "shell",
"command": "make -j4",
"options": {
"cwd": "${workspaceFolder}/build"
},
}
]
}
2.2 点击 Terminal>Run Task,依次选择定义好的task。
2.3 创建launch.json文件。点击左侧run的按钮,选择create a launch.json file。弹出搜索框选择C++(GDB/LLDB)。可自动创建lancu.json文件,将proggram中的文件名改成已经编译好的文件名。
2.4 添加断点,运行Run start debug(F5)。