当前位置: 首页> 游戏> 攻略 > C++初学者指南-4.诊断---用gdb调试

C++初学者指南-4.诊断---用gdb调试

时间:2025/7/8 11:32:54来源:https://blog.csdn.net/silencestarsky/article/details/140218238 浏览次数:0次

C++初学者指南-4.诊断—用gdb调试

幻灯片
在这里插入图片描述
gdb / 前端

gdbGNU的命令行调试器
cgdb基于终端的gdb前端
Linux安装:sudo apt-get install cgdb
gdbgui基于浏览器的gdb前端
网址:https://gdbgui.com/
安装:sudo pip install gdbgui
Qt Creator可以连接gdb
Visual Studio Code可以连接gdb
Vim"termdebug"包包含在Vim 8.1中

在这里插入图片描述
示例:sum.cpp,根据命令行参数进行等差数列的累加求和计算。
在这里插入图片描述
用于调试的编译

  • 在执行文件中增加调试信息,注意“-g”参数。
  • 避免优化等级为-O1、 -O2、 -O3,使用 -O0或 -Og参数替代。

在这里插入图片描述
启动调试器
在这里插入图片描述
你现在处于gdb的控制台中。
在这里插入图片描述
运行您的程序
带命令行参数运行
在这里插入图片描述
程序结束
在这里插入图片描述
设置断点

命令程序停止在…
break 12在当前激活的源代码文件第12行
break sum_up_to函数sum_up_to在所有源代码文件中的第一个可执行代码行
break sum.cpp:7源代码文件sum.cpp的第7行
(如果不在同一目录中,请使用相对路径名或完整路径名)
break sum.cpp:main在sum.cpp源文件中的main函数的第一个可执行代码行

在这里插入图片描述
单步执行你的程序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
管理断点

info breakpoints显示所有断点
delete删除所有断点
delete 1删除1号断点
clear在下一条指令中删除断点
disable 2禁止2号断点
enable 2使能2号断点
save breakpoints file保存断点到文件
source file载入文件中的断点

在这里插入图片描述
在这里插入图片描述
有用的gdb命令

按键/命令快捷命令解释
<Enter>重复前个命令
<Tab>完整的命令或函数名
run [<arg>…]r [<arg>…]运行程序(带命令行参数)
break <loc>b <loc>在函数开始或者指定行设置断点
steps执行下一条指令,进入函数单步执行
nextn执行下一条指令,不进入函数单步执行
jump <loc>j <loc>跳转到指定位置(用于退出长循环或无限循环)
continuec继续执行程序直到下个断点或者程序结束
until <loc>u <loc>继续执行直到指定位置(函数或某行)
finishfin完成(跳出)当前函数
print <expression>p打印表达式的值,例如:变量
info breakpointsi b列出所有断点
info localsi locals列出所有局部变量和其值
backtracebt显示调用堆栈

gdb前端
cgbd (Linux/Win/MacOS/WSL)

  • 在命令行中运行
  • 分屏显示,带有源代码窗口
  • 显示断点和当前指令
  • 在Ubuntu/Debian/WSL中安装:sudo apt install -y cgdb

gdbgui

  • 基于浏览器的 GDB 前端
  • 通过 pip 安装: sudo pip install gdbgui

DDD (Linux/Win/WSL/X-Server)

  • 官方 GNU 调试器前端
  • 用户界面有点老式,但实际上如果你花一些时间使用它,它非常有用。
  • 在Ubuntu/Debian/WSL中安装: sudo apt install -y ddd

WinDBG (Win)
在 Microsoft Visual Studio 中的GDB调试器。

seer (Linux)
相对较新的基于Qt的GDB GUI前端

Online GDB
适用于 C、C++、Python 和许多其他语言的在线编译器和调试器工具。

附上原文链接
如果文章对您有用,请随手点个赞,谢谢!^_^

关键字:C++初学者指南-4.诊断---用gdb调试

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: