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

UNIX及UNIX-like环境下的调试工具gdb使用方法

准备工作

我们首先要将可执行程序变成debug版本。gcc编译器默认是release版本发布,那我们怎么将其变成debug版本呢?只需要在makefile文件中加上-g

debug版本和release版本的区别

先从文件大小初见端倪,debug版本的文件是要比release版本的文件大的

那我们具体如何在Linux环境下调试程序呢?

首先我们需要输入这样的一个命令:gdb+可调式程序名,注意这个程序必须是以debug版本发布的,也就是需要在makefile文件中用-g进行书写。

我们简写r,就可以直接运行程序(run),默认就是跑完了,但我们像调试的的话,需要打断点,那我们怎么打断点呢?

b + 行号就是给这一行打断点

如果有多文件,我们就是文件名+行号也是可以打的

info b用来查看断点

那如何删掉断点呢?

d 断点编号就是删除断点,注意这里的编号并不是行号,是断点的编号!

这里的第一列才是断点的编号

那我们如何禁用断点呢,禁用断点的意思就是,这个断点不使用了,但还会留下痕迹,跟VS编译器里面的空心断点是一样的

在Linux下我们采用disable 编号的形式进行禁用

再启用就是 enable 编号的形式

n 就是逐过程 F10

s 逐语句 F11

p :显示变量的内容和地址

display:变量名/去地址         常显示变量的内容和地址

那如果不想常显示呢?

undisplay + 编号,取消常显示变量的内容和地址

quit就是退出gdb调试

c:从一个断点运行到下一个断点(范围查找)

bt:查看调用堆栈

finish:将一个函数运行结束,就停下来(范围查找)VS编译器中就没有这个功能

until:在一定范围内,直接运行到指定行

set var name = value:修改一个变量的内容(不用改代码,多分枝测试)

总结:

肯定是没有VS图形化界面调试舒服,或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。


http://www.mrgr.cn/news/17502.html

相关文章:

  • nanogpt怎么进行模型切片,以实现推理过程算力共享,切多头
  • 【RabbitMQ应用篇】常见应用问题
  • 强化学习与深度学习的结合
  • yolo8 目标检测、鉴黄
  • 前端与后端的身份认证
  • Android Codec2 CCodec (七)IConfigurable
  • 后台框架-统一异常管理
  • Python爬虫案例五:将获取到的文本生成词云图
  • 走进酒厂,探寻白酒酿造的奥秘
  • MySQL事务处理详解:实现数据一致性与隔离性的艺术
  • 【AI大模型】基于docker部署向量数据库Milvus和可视化工具Attu详解步骤
  • 茴香豆Web实践
  • 基于STM32心电模块学习笔记
  • 【网络安全】逻辑漏洞:绕过应用程序重要功能
  • 低代码开发:挑战与机遇并存,为何赞誉多而普及难!
  • 写论文去哪个网站?推荐这7家开题报告一键自动生成网站!
  • OpenAI Whisper API (InvalidRequestError)
  • 自然语言处理-词向量转换
  • java fastxml json 科学计数法转换处理
  • Java 入门指南:Java 并发编程 —— Condition 灵活管理线程间的同步