GDB调试操作

GDB调试操作GDB 是一个由 GNU 开源组织发布的 UNIX LINUX 操作系统下的 基于命令行的 功能强大的程序调试工具 对于一名 Linux 下工作的 c c 程序员 gdb 是必不可少的工具 1 启动 gdb 使用 vim 编辑器编写一个简单的测试程序并保存 vimhello c 然后使用 gcc 将其编译为可执行文件 同时使用 g 表示该程序可调试 gcc ghello c ohello 接下来启动 gdb 进行调试 gdbhello 或 gdb qhello q 参数可以屏

 目录

一、启动gdb

二、启动源码

三、运行程序

四、设置断点

五、单步执行

六、查看变量

七、退出

八、一些其他命令

(1)运行命令

(2)断点

(3)运行信息


GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具。


一、启动gdb

使用vim编辑器编写一个简单的测试程序并保存:

vim hello.c 

然后使用gcc将其编译为可执行文件,同时使用-g表示该程序可调试

gcc -g hello.c -o hello

接下来输入gdb -q + 可执行文件启动gdb进行调试:

gdb hello 或 gdb -q hello

-q参数可以屏蔽一些gdb版本等相关信息,使得页面看起来干净些(我用了)。至此gdb启动完毕:

GDB调试操作


二、启动源码

输入list(l)即可查看程序源码

GDB调试操作
默认显示10行,回车显示更多


三、运行程序

输入run(r)开始运行程序,直到遇到“断点”或者“结束”:

GDB调试操作
因为还没设断点,所以直接运行到最后


四、设置断点

输入 break(b)+数字 可以对程序进行断点操作(数字就是设置断点的代码行数)

GDB调试操作
我在5和9行设置了断点

 输入 info breakpoints 即可查看断点信息

GDB调试操作

 下面我们run一下看看是什么效果:

GDB调试操作

 看,卡到了第一个断点处(第五行)


五、单步执行

next:单步执行程序,但是遇到函数时会直接跳过函数,不进入函数

step:单步执行程序,但遇到函数会进入函数

continue继续执行程序,直到遇到断点或结束

GDB调试操作


六、查看变量

print + 变量:查看变量

whatis + 变量:查看变量数据类型

GDB调试操作


七、退出

输入q即可退出gdb

GDB调试操作


八、一些其他命令

(1)运行命令

until 如果你厌倦了在一个循环内单步跟踪,它可以运行程序直到退出循环体
until + 行号 运行至某行
finish 运行程序,直到当前函数返回完成,并且打印函数返回时的堆栈地址和返回值及参数值等信息
call + 行数 + (参数)

调用程序中可见的函数,并传递参数

如:call gdb_test(66)

(2)断点

delete + n 删除第n个断点
disable + n 暂停第n个断点
enable + n 开启第n个断点
clear + n 清除第n行的断点
info b ( info breakpoint ) 显示当前程序的断点设置情况
delete breakpoints 清除所有断点

(3)运行信息

where / bt

当前运行的堆栈列表
bt backtrace 显示当前调用堆栈
up / down 改变堆栈显示的深度
set args + 参数 指定运行时的参数
show args 查看设置好的参数
info program 查看程序是否在运行,以及进程号被暂停的原因
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219042.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:56
下一篇 2026年3月17日 下午10:56


相关推荐

  • 修改 css变量,通过CSS变量修改样式的方法示例

    修改 css变量,通过CSS变量修改样式的方法示例问题 js 怎么去修改 css 伪类样式呢 但是 js 并没有伪类选择器 那么该怎么办呢 网上有不少方法 比如通过切换元素的类 在 style 中动态插入新的样式等 那么这里再来一种方法 设置 css 变量 var 通过 js 去改变这个变量来实现 示例 改变 div 的 hover 背景色 root divHoverColo red div width 100px height 100px backgrou

    2025年9月23日
    4
  • 模型评估之混淆矩阵

    模型评估之混淆矩阵在前面的文章中我们讲到了回归模型和分类模型的评估指标,区分了准确率和精确率的区别,并且比较了精确率和召回率内在的联系。本篇文章我们再来学习另外一个评估方法,即混淆矩阵(confusion_matrix)。在讲矩阵之前,我们先复习下之前在讲分类评估指标中定义的一些符号含义,如下:TP(TruePositive):将正类预测为正类数,真实为0,预测也为0 FN(FalseNegative):将正类预测为负类数,真实为0,预测为1 FP(FalsePositive):将负类预测为正类数,真实为

    2022年5月14日
    43
  • n8n工作流实操课(入门+进阶+选修)12个完整案例+JSON文件,带你玩转自动化,效率提升10倍!

    n8n工作流实操课(入门+进阶+选修)12个完整案例+JSON文件,带你玩转自动化,效率提升10倍!

    2026年3月13日
    3
  • gcc命令大全

    gcc命令大全一、gcc的基本用法使用gcc编译器时,必须给出一系列必要的调用参数和文件名称。不同参数的先后顺序对执行结果没有影响,只有在使用同类参数时的先后顺序才需要考虑。如果使用了多个-L的参数来定义库目录,gcc会根据多个-L参数的先后顺序来执行相应的库目录。因为很多gcc参数都由多个字母组成,所以gcc参数不支持单字母的组合,Linux中常被叫短参数(shortoptions),如-dr…

    2022年10月13日
    5
  • OpenClaw 热点新闻总结 | 2026-03-13 ~ 2026-03-16(TopHub 四大平台搜索版)

    OpenClaw 热点新闻总结 | 2026-03-13 ~ 2026-03-16(TopHub 四大平台搜索版)

    2026年3月16日
    3
  • javaweb项目页面崩溃报错

    javaweb项目页面崩溃报错在电脑上面登录服务器应用 web 项目的网址后 进入页面 点击界面左侧的文件夹 正常情况是界面右侧会出现这个文件夹下面的所有图片 但是用户说 出现页面崩溃 页面打不开 我去他的机器上面看见他的浏览器页面确实崩溃了 我在本机启动服务 连服务器的数据库 发现正常 就重新打了个包到服务器上面 发现在我本机可以 这说明不是代码的问题 用户说不行 还是浏览器还是显示崩溃 我怀疑是他的浏览器的问题 因为我自己的浏览器是可以访问到服务器 并返回图片数据的 他用的谷歌 我在他机器上操作 浏览器换成了搜狗 正常了 最后建

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号