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

【Linux】linux中的c++怎么调试?gdb的介绍和使用。

  1. 背景

1.1.前提知识

程序的发布方式有两种,debug模式和release模式
Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

windows上的调试方法有区别吗?

1.调试思路是一样的
2.调试的操作方式,一定是不一样的(命令行调试)

  1. 开始使用

2.1.安装gdb

sudo yum install -y gdb

2.2.使用

gdb binFile 退出: ctrl + d 或 quit /q

2.2.1.显示binFile源代码(list/l)

一般list/l会记住上一次显示的行数,接着上次的位置往下列,每次列10行。
list/l 【行号】:从行号开始往下列10行。
list/l 【函数名】 :列出某个函数的源代码。列10行。

2.2.2.添加/删除断点(break/b)

break/b 行号:在某一行设置断点.
delete breakpoints / d:删除所有断点 delete breakpoints / d 【n】:删除序号为n的断点(n不是行号)
info b :查看断点
info(或i) breakpoints:参看当前设置了哪些断点
disable breakpoints:禁用断点(遇到断点就不会停下来)
(enable breakpoints )/ enable:启用断点
disable breakpoints 【序号】:禁用某一个断点。
(enable breakpoints )/ enable 【序号】:启用某一个断点

2.2.3.查看(info)(p)(display)

info b/break :查看当前所有断点。
info/i locals:查看当前栈帧局部变量的值。
p 【变量名】打印变量
display 变量名:跟踪查看一个变量,每次停下来都显示它的值 。(也可以查看地址)
undisplay:全部取消对先前设置的那些变量的跟踪。
undisplay 【序号】:取消对这个变量的跟踪。

2.2.4.运行调试(r/run)(n/next)(s/stop)(c/continue)

run/r:从开始连续而非单步执行程序(调试运行)
n/next:单条执行。 (逐过程)
s/step:进入函数调用(逐语句)
continue/c:从当前位置开始连续而非单步执行程序,也就是从当前位置开始到下一个断点或者结束。
finish:执行完当前函数,然后停下来等待命令 。可以帮我们快速的甄别那个函数出问题了。
until 【行号】:跳至X行。(可能不是预期行,去掉空格/无用的符号)

2.2.5.查看调用堆栈(bt)

bt :查看调用堆栈。

2.2.6.修改参数的值

set 【var】:修改变量的值,根据我们的需要修改临时变量的值
  1. 理解

3.1.f5 / ctrl+f5 / shift+f5

f5:调试运行,有断点直接停下来。 (r/run)
ctrl+f5:不调试执行,在断点不停。
shift+f5:取消调试。(q/quit)
f11:逐个语句(s/step)
f10:逐过程(n/next)

http://www.lryc.cn/news/40637.html

相关文章:

  • 提升Python代码性能的六个技巧
  • VI的常用命令
  • 【数据结构】万字深入浅出讲解单链表(附原码 | 超详解)
  • 无线WiFi安全渗透与攻防(五)之aircrack-ng破解WEP加密
  • MySQL中事务的相关问题
  • 推荐算法再次踩坑记录
  • STM32 (十五)MPU6050
  • 使用yarn,依赖报各种错误怎么办
  • 面试官:rem和vw有什么区别
  • 【GPT-4】GPT-4 相关内容总结
  • 5.springcloud微服务架构搭建 之 《springboot集成Hystrix》
  • 【工作中问题解决实践 七】SpringBoot集成Jackson进行对象序列化和反序列化
  • 香港服务器遭受DDoS攻击后如何恢复运行?
  • 【Hive】配置
  • IP-GUARD如何强制管控电脑设置开机密码要符合密码复杂度?
  • 剑指 Offer II 031. 最近最少使用缓存
  • 44岁了,我从没想过在CSDN创作2年,会有这么大收获
  • 相位相参信号源的设计--示波器上的信号不稳定,来回跑?
  • Spring Boot 整合 RabbitMQ 多种消息模式
  • node多版本控制
  • Redis set集合
  • 漫画:什么是希尔排序算法?
  • 问卷工具选择要看哪些方面?
  • Qt之QPainter绘制多个矩形/圆形(含源码+注释)
  • 介绍两款红队常用的信息收集组合工具
  • 类ChatGPT国产大模型ChatGLM-6B,单卡即可运行
  • vue的diff算法?
  • C++ | 对比inline内联函数和宏的不同点
  • 面试官问 : ArrayList 不是线程安全的,为什么 ?(看完这篇,以后反问面试官)
  • Linux串口应用编程