前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UNIX及UNIX-like环境下的调试工具gdb使用方法

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

作者头像
用户11316056
发布2024-10-16 09:32:00
880
发布2024-10-16 09:32:00
举报
文章被收录于专栏:可涵的从小白到大牛的征程

准备工作

我们首先要将可执行程序变成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的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 那我们具体如何在Linux环境下调试程序呢?
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档