河北建设厅网站查询,做网站不推广,百度搜索风云排行榜,新手学做网站编程(꒪ꇴ꒪ )#xff0c;Hello我是祐言QAQ我的博客主页#xff1a;C/C语言#xff0c;数据结构#xff0c;Linux基础#xff0c;ARM开发板#xff0c;网络编程等领域UP#x1f30d;快上#x1f698;#xff0c;一起学习#xff0c;让我们成为一个强大的攻城狮#xff0…(꒪ꇴ꒪ )Hello我是祐言QAQ我的博客主页C/C语言数据结构Linux基础ARM开发板网络编程等领域UP快上一起学习让我们成为一个强大的攻城狮送给自己和读者的一句鸡汤集中起来的意志可以击穿顽石!作者水平很有限如果发现错误请在评论区指正感谢 引言 在软件开发过程中调试是不可或缺的一部分。C/C 开发者常常使用 GDB 进行调试而在 Visual Studio Code中集成 GDB 可以提供一种高效、直观的调试体验。本文将为你详细介绍如何在 VS Code 中配置和使用 GDB 进行 C/C 调试并解答一些常见问题。
一. 安装 VSCode 插件 首先确保你已经在 VSCode 中安装了 C/C 和 GDB Debug插件如果没有安装可以在 Extensions 视图左侧四个方块中搜索 C/C 和“GDB Debug” 并分别进行安装Install该插件提供了强大的代码编辑和调试功能。 二. 配置 GDB 在配置 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 进行调试。
三. 基本调试命令
在 VSCode 的调试视图中 你可以使用一系列基本调试命令如
Breakpointsbreak 在源代码中设置断点以便在程序执行到这些地方时停下来RunF5 启动程序Continuecontinue 恢复程序执行直到下一个断点Step IntoF11 逐行进入函数内部Step OverF10 逐行执行当前函数不进入函数内部Step OutShiftF11 : 从当前函数中跳出继续执行到函数返回的地方StopShiftF5: 停1止调试
终端使用命令行方式调试 启动GDB的方式一般为 gdb 你的可执行文件名还有如下的几种
1.调试core文件
//用于调试一个运行程序和core文件core文件是程序非法执行后core dump产生的文件
gdb program core 2.使用GDB “attach”到一个正在运行的服务程序上去并调试它
gdb program PID
或者
gdb attach PID主要的步骤详细说明一下其他的自己摸索一下就会了具体步骤如下
1. 运行毫无设置的run 2. 设置断点在运行之前设置 设置断点是调试的关键步骤之一。在源代码中点击行号旁边或者通过命令行使用 break 命令设置断点第十行还可以在指定模块和函数前设置断点禁用断点和删除断点等。 3. 逐行运行 这里主要说一下step和next的区别 step 命令 逐行执行程序进入函数内部 next 命令 逐过程执行程序不进入函数内部。
4. backtrace 使用 在GDB调试中有时候会出现报错Segmentation fault该报错是因为出现了内存错误我们就可使用 backtrace 命令来追溯问题出在哪一步当然这个问题一般出现时就会提示错误在哪一行但我们可以通过该命令来回溯其之前调用的地方逐个检查问题方便更快找出。
5. info 使用 这些命令提供了丰富的调试信息帮助你理解程序的执行状态、断点信息、寄存器值等。
info breakpoints / info break / info b //查看断点信息包括断点类型BreakPoint、WatchPoint、CatchPoint、断点编号Num、断点状态Eanble/Disable、断点被击中的次数hit times 等信息info watchpoints //查看观察点信息显示的信息与 info b 类似个人认为完全可以用info b替代好处可能就是当断点数量比较多时只关注观察点而屏蔽断点信息info program // 查看程序状态 包括程序是否已停住如果停住了是停在哪个断点上info stack //可以查看到程序的调用栈信息info register //查看程序的各个寄存器的值info threads //查看 线程 信息info file //查看当前GDB正在调试程序所在的文件info line //查看(当前位置的)源代码在内存中的地址info line test.c:func //查看(指定文件名:函数名)的源代码在运行时的内存地址6. 常见错误解决 一般来说配置好之后点击“运行和调试”右上角就会出现该绿色三角点击之后报错让你修改 launch.json 文件 那么说明你的该文件中存在语法上的错误或缺失某行照着检查一下即可一定要注意路径的/是否加全。 在 VSCode 中GDB 的集成提供了直观的调试工具。你可以查看变量、观察寄存器状态等。通过调试视图你可以更轻松地导航和掌握程序执行的每个步骤。 除了基本的调试命令外GDB 还提供了一些高级技巧如查看内存、观察程序状态等。深入了解这些功能可以帮助你更全面地调试代码。一般来说两种GDB使用方式配合调试是最好的它们在不同的地方有各自的亮点和作用。
四、结语 通过本文的指南希望将能够在 VSCode 中配置和使用 GDB 进行 C/C 程序的高效调试。调试是编程中的一项重要技能善用调试工具可以提高代码质量加速开发周期。 更多C/C语言、Linux系统、数据结构和ARM板实战相关文章关注专栏 手撕C语言 玩转linux 脚踢数据结构 系统、网络编程 探索C 6818ARM开发板实战
写在最后
今天的分享就到这啦~觉得博主写的还不错的烦劳 一键三连喔~感谢关注