VSCode设置GDB
VSCode 设置 GDB 调试工具
调试 Linux 平台应用
这里需要注意的我们的在 CMake 编译可执行程序时,需要加设置DEBUG
模式。
例如:
- 通过命令行的方式
cmake -DCMAKE_BUILD_TYPE=Debug ..
- CMakeLists.txt 设置
set(CMAKE_BUILD_TYPE "Debug")
linux 下验证应用程序是否为 debug 版本:
readelf -S test | grep debug
其次我们还要在 Linux 上安装 GDB
apt-get update
apt-get install gdb
VSCode 创建调试启动文件
【Run(Ctrl + Shift + D)】-> 【create a launch.json file】-> 【C++ (GDB/LLDB)】
然后设置launch.json
文件。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/exec",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
这是 Visual Studio Code 的配置文件 launch.json 的内容,专门用于配置 C++调试器。这个文件告诉 VS Code 如何启动调试器以及调试器的行为。下面是文件中各个选项的含义(以下参数描述由 ChatGPT4 生成):
-
version: 指定了 launch 配置的版本号。这对于 VS Code 来说很重要,以便了解如何解析和使用配置文件。
-
configurations: 这是一个配置数组,每个配置都是一个可以启动的调试会话。在这个例子中,只有一个配置。
配置对象的属性:
-
name: 这是用户在选择调试配置时看到的名称,在这里是“(gdb) 启动”。这通常会在 VS Code 界面的调试启动配置下拉菜单中显示。
-
type: 表示调试器的类型,这里是 cppdbg,表明这是一个 C++的调试配置。
-
request: 指定调试会话的类型,这里是 launch,意味着 VS Code 将会启动一个新的调试会话。另一种可能的值是 attach,表示附加到一个已经运行的进程。
-
program: 指定了要调试的可执行文件的路径。${workspaceFolder}是一个变量,它会被替换为当前打开的工作区(项目)的根文件夹路径。这里假设可执行文件位于工作区的 build/exec 路径下。
-
args: 这是一个数组,包含传递给程序的命令行参数。在这个例子中,它是空的。
-
stopAtEntry: 如果设置为 true,则调试器会在程序入口点(通常是 main 函数)暂停。在这个例子中,它被设置为 false。
-
cwd: 表示当前工作目录,即程序启动时的目录。${workspaceFolder}表示程序将在工作区的根目录中启动。
-
environment: 这是一个数组,用于设置环境变量。数组中的每个元素都是一个包含 name 和 value 的对象。在这个例子中,该数组是空的。
-
externalConsole: 如果设置为 true,则程序将在新的控制台窗口中运行。这对于需要输入或查看控制台输出的程序很有用。在这个例子中,它被设置为 false,意味着输出将在 VS Code 的内置终端中显示。
-
MIMode: 指定了调试器接口,这里是 gdb,表示 GNU 调试器。
-
setupCommands: 这是一个数组,包含在启动调试会话时自动发送给调试器的命令。在这个例子中,只有一个命令-enable-pretty-printing,它指示 gdb 启用整齐打印功能,使得复杂的数据结构(如 C++ STL 容器)的输出更易于阅读。
-
description: 命令的描述,这里是“为 gdb 启用整齐打印”。
-
text: 要发送给调试器的实际命令文本。
-
ignoreFailures: 如果设置为 true,即使命令失败,调试器的启动也不会被阻止。在这里,它被设置为 true。
这个配置文件是为了使用 gdb 调试 C++程序时的 VS Code 设置。用户可以根据自己的需要修改这些设置。