首页 > 编程语言 >C++初学者指南-4.诊断---用gdb调试

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

时间:2024-07-06 20:59:13浏览次数:25  
标签:break sum C++ --- gdb install 断点 调试器

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 和许多其他语言的在线编译器和调试器工具。

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

标签:break,sum,C++,---,gdb,install,断点,调试器
From: https://blog.csdn.net/silencestarsky/article/details/140218238

相关文章

  • C++初学者指南-3.自定义类型(第一部分)-异常
    C++初学者指南-3.自定义类型(第一部分)-异常文章目录C++初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理问题和保证资源泄露使用RAII避免内存泄漏!析构函数:不要让异常逃脱!异常保证无抛出异常保......
  • opencv环境搭建-python
    最近遇到了一些图像处理的需求,所以需要学习一下opencv,来记录一下我的学习历程。安装numpypipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplenumpy安装matplotlibpipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplematplotlib安装opencvpipin......
  • 比赛获奖的武林秘籍:03 好的创意选取-获得国奖的最必要前提
    比赛获奖的武林秘籍:03好的创意选取-获得国奖的最必要前提摘要本文主要介绍了大学生电子计算机类比赛和创新创业类比赛创意选取的重要性,并列举了好的创意选取和坏的创意选取的例子,同时说明了好的创意选取具有哪些特点,同时对常见的创意选取途径与来源进行了基本介绍。正文好的......
  • C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例
    C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例目录C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例1、概述2、实现效果3、主要代码4、源码地址更多精彩内容......
  • gdb安装调试,多系统下的安装使用(Ⅳ)
    1.gdb是什么?为什么要熟悉gdb调试?         gdb(GNU调试器)是一个强大的调试工具,允许开发者在程序运行时检查和修改变量的值,单步执行代码,设置断点,以及查看程序的状态。可以比较偏激的说如果是关注于linux下的开发和研究,基本上离不开gdb调试的。2.在各平台下的gdb下载......
  • 比赛获奖的武林秘籍:03 好的创意选取-获得国奖的最必要前提
    比赛获奖的武林秘籍:03好的创意选取-获得国奖的最必要前提摘要本文主要介绍了大学生电子计算机类比赛和创新创业类比赛创意选取的重要性,并列举了好的创意选取和坏的创意选取的例子,同时说明了好的创意选取具有哪些特点,同时对常见的创意选取途径与来源进行了基本介绍。正文......
  • iOS开发-图片UIImage
    UIImage和UIImageView是iOS开发中常用的两个类,分别用于表示图像数据和显示图像。UIImageUIImage是一个表示图像数据的类,可以从文件、数据、图像资源库等加载图像。UIImage支持多种图像格式,包括PNG、JPEG、GIF等。创建UIImage从文件创建UIImage*image=[UIImage......
  • c++ u7-02-高精度乘法
    本节课作业:链接:https://pan.baidu.com/s/13-FC86jSHGziRDA8lqzimg?pwd=owv1提取码:owv1   高精度乘法             #include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;stringx,y;inta......
  • node-red的基本指令
    1.inject->debug输入到输出,调试结果在右边如果选择时间戳的话,可以选择立即执行,或者周期性,持续执行inject除了时间戳还有一些其他输入项可以选择inject选择json文件输出写好json文件之后点击格式化json,可以校对文件格式payload.number可以让输出只输出number......
  • ESP32-C3模组上跑通MD5(3)
    接前一篇文章:ESP32-C3模组上跑通MD5(2)本文内容参考:ESP32MD5代码_esp32idfmd5开启-CSDN博客ESP32学习笔记(47)——加密算法AES/MD5/SHA_esp32aes-CSDN博客特此致谢!上一回解析了ESP-IDF中组件(components)中MD5相关的例程,也给出了笔者参照该例程自行编写的计算MD5的代码以......