在软件开发过程中,调试是不可或缺的一部分。C/C++ 开发者常常使用 GDB 进行调试,而在 Visual Studio Code中集成 GDB 可以提供一种高效、直观的调试体验。本文将为你详细介绍如何在 VS Code 中配置和使用 GDB 进行 C/C++ 调试,并解答一些常见问题。
首先,确保你已经在 VSCode 中安装了 C/C++ 和 GDB Debug插件,如果没有安装,可以在 Extensions 视图(左侧四个方块)中搜索 "C/C++" 和“GDB Debug” 并分别进行安装(Install),该插件提供了强大的代码编辑和调试功能。
在配置 GDB 之前,确保你已经安装了 GDB 调试器。然后,在 VSCode 中创建一个 launch.json
文件以配置调试环境。或者直接点击运行调试就会弹出配置该文件的提示。
打开后默认长这样,当然是不行的,所以点击右下角的Add Configuration...
然后选择你需要的类型:
或者复制如下代码直接粘贴进去亦可:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/your_executable", //${workspaceFolder}是路径除执行文件外其他
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}", //这里也一样
"environment": [], //环境有则需要配置,无则无需管
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
但要确保替换 "your_executable"
为你的可执行文件的路径。这个配置会告诉 VSCode 使用 GDB 进行调试。
你可以使用一系列基本调试命令,如:
启动GDB的方式一般为: gdb <你的可执行文件名>,还有如下的几种:
1.调试core文件:
//用于调试一个运行程序和core文件,core文件是程序非法执行后core dump产生的文件
gdb core
2.使用GDB “attach”到一个正在运行的服务程序上去,并调试它:
gdb
或者:
gdb attach
主要的步骤详细说明一下,其他的自己摸索一下就会了,具体步骤如下:
设置断点是调试的关键步骤之一。在源代码中点击行号旁边,或者通过命令行使用 break
命令设置断点(第十行),还可以在指定模块和函数前设置断点,禁用断点和删除断点等。
这里主要说一下step和next的区别:
step
命令: 逐行执行程序,进入函数内部;
next
命令: 逐过程执行程序,不进入函数内部。
在GDB调试中,有时候会出现报错Segmentation fault,该报错是因为出现了内存错误,我们就可使用 backtrace 命令来追溯问题出在哪一步,当然这个问题一般出现时就会提示错误在哪一行,但我们可以通过该命令来回溯其之前调用的地方逐个检查问题,方便更快找出。
一般来说,配置好之后点击“运行和调试”,右上角就会出现该绿色三角,点击之后报错让你修改 launch.json
文件 那么说明你的该文件中存在语法上的错误或缺失某行,照着检查一下即可,一定要注意路径的/是否加全。
在 VSCode 中,GDB 的集成提供了直观的调试工具。你可以查看变量、观察寄存器状态等。通过调试视图,你可以更轻松地导航和掌握程序执行的每个步骤。
除了基本的调试命令外,GDB 还提供了一些高级技巧,如查看内存、观察程序状态等。深入了解这些功能可以帮助你更全面地调试代码。一般来说两种GDB使用方式配合调试是最好的,它们在不同的地方有各自的亮点和作用。
通过本文的指南,希望将能够在 VSCode 中配置和使用 GDB 进行 C/C++ 程序的高效调试。调试是编程中的一项重要技能,善用调试工具可以提高代码质量,加速开发周期。
更多C/C++语言、Linux系统、数据结构和ARM板实战相关文章,关注专栏:
手撕C语言
玩转linux
脚踢数据结构
系统、网络编程
探索C++
6818(ARM)开发板实战
一键三连喔
~