当前位置: 首页 > news >正文

Linux---gdb和cgdb

一、概念

1.gdb

Linux下的调试工具

①在Linux下程序默认是release模式,成需要调试,必须得是debug模式,编译时需要加入-g选项

②示例

release模式,不可调试

debug模式,可调试

2.简单指令

①运行:r

②退出:quit

③查看源代码:list(l)+数字从数字行开始显示

④打断点:b+行号

⑤程序直接跑完:c

3.cgdb

因为gdb无法直接显示出源代码,看着很不方便,所以我们一般使用cgdb来进行调试

二、cgdb

1.界面

Esc可以将光标移动到代码处,按i可以将光标移动到下边的调试处

2.指令

①l+行号:从行号行开始展示代码

②r:无断点直接将程序跑完,有断点运行到断点处(相当于vs中的F5)

③b:Ⅰb+文件名+行号     在行号所在行打上断点

         Ⅱ b+文件名+函数名 在函数名所在行打上断点

         Ⅲ b+行号     在当前文件中行号所在行打上断点

         打上断点的行号会变成红色

④info b:查看断点信息

⑤d + Num:删除断点

注意:删除时d后边要加断点编号,不能写行号!!!

删除后其他Num不会变,新增断点依次往后累加

⑥n(next):逐过程,不会进入函数(相当于vs中的F10)

⑦s(step):逐语句,会进入函数(相当于vs中的F11)

⑧p:打印指定变量的值

⑨finish:执行当前函数返回,然后停止,不能在main函数中使用

⑩disable+断点号:禁用断点,断点会变黄,起标记作用

⑪enable+断点号:恢复断点

⑫c(continue):直接运行到下一个断点处,断点对代码进行块级别划分,以块为单位进行快速定位区域

⑬until+行号:直接跳转到行号处

⑭display+变量:常显示变量的值,继续调试自动显示出来

⑮undisplay+变量编号:取消display

⑯info locals:显示当前函数的所有变量

3.调试技巧

①watch+变量:查看变量是否变化,发生变化会显示出来,不变化不显示,删除和断点一样,d+断点号

注意:有一些变量不应该被修改,但是你怀疑他修改导致了问题,你可以watch他,如果发生了变化,他会通知你

②set var:修改变量的值

③b+行号+if+条件语句:在循环中,直接进入条件所在的行

④condition 行号:给已经存在的断点新增条件

http://www.dtcms.com/a/356132.html

相关文章:

  • UML状态图中entry/do/exit动作的深入解析与C/C++实现
  • 《深度讲解 C 语言动态内存:函数用法、错误规避与经典笔试题》
  • 同类软件对比(二):VS Code 与 PyCharm 的 Python 开发对比与使用建议
  • JavaScript初识:给小白的第一堂编程课
  • Day20 常见降维算法
  • 沙箱操作工具
  • 机器学习(讲解)
  • ROS2 入门实战 —— 从环境搭建到第一次控制小乌龟(一)
  • 【电子设计自动化(EDA)】Altium Designer25——电子设计自动化(EDA)软件版保姆级下载安装详细图文教程(附安装包)
  • linux网络编程-----TCP服务端并发模型(epoll)
  • [数组]27.移除元素
  • SQLServer日志文件损坏恢复办法
  • day13(练习题)
  • 卷积核尺寸如何计算?
  • Containerd卸载指南
  • shell脚本编程规范与变量
  • Shell 入门
  • LeetCode刷题记录----35.搜索插入位置(Easy)
  • 117、【OS】【Nuttx】【周边】效果呈现方案解析:while 循环处理(下)
  • 虚拟机逃逸攻防演练技术文章大纲
  • 八个按键一一对应八个输出
  • C语言————斐波那契数列(例题1)
  • BoardSim仿真
  • DoIP路由激活报文
  • Shell脚本(2)
  • 洛谷p1028数的计算 详解
  • 【智能体】零代码学习 Coze 智能体(1)
  • 人工智能基础概念
  • java通过redis简单实现分布式锁
  • 【MySQL数据库】存储引擎 学习记录