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

Linux中Gdb调试工具常用指令大全

1.gdb的安装

如果你是root用户直接用指令 :yum install gdb ;如果你是普通用户用指令:sudo yum install gdb;

2.gdb调试前可以对你的makefile文件进行编写:

下面展示为11.c文件编写的makefile文件:


code-debug:11.c
        gcc -g 11.c -o code-debug 

.PHONY:clean

clean:
        rm -f code-debug

3.开始调试:

当你的makefile编写完成后,你执行了make指令后,生成了可执行程序code-debug;你输入指令:gdb code-debug

出现这个界面说明你进入gdb成功!

接下来是一些常见的指令:

启动与退出

  • gdb <program>:启动 Gdb 并加载指定的可执行文件。例如gdb main,用于调试名为main的可执行程序。
  • quitq:退出 Gdb 调试环境。

程序执行控制

  • runr:启动程序的执行,可带参数,如run arg1 arg2,表示使用参数arg1arg2运行程序。
  • continuec:从当前断点处继续执行程序,直到遇到下一个断点或程序结束。
  • nextn:单步执行程序,遇到函数调用时,不会进入函数内部,直接执行函数调用语句的下一行。
  • step s:单步执行程序,若当前行是函数调用,则会进入函数内部继续单步执行。
  • finish:继续执行当前函数,直到函数返回,并显示返回值。
  • until:不带参数时,执行直到当前函数返回;带参数(如行号或地址)时,程序继续执行直到到达指定位置。

断点操作

  • break <location>b <location>:在指定位置设置断点,位置可以是行号(如b 10在第 10 行设置断点)、函数名(如b mainmain函数入口设置断点)或文件名 + 行号(如b main.c:20main.c的第 20 行设置断点)。
  • tbreak <location>:设置临时断点,该断点在被命中一次后自动删除。
  • info breakpointsinfo b:显示当前设置的所有断点的信息,包括断点编号、位置、是否启用等。
  • delete <breakpoint_number>:删除指定编号的断点,如delete 1删除编号为 1 的断点。
  • disable <breakpoint_number>:禁用指定编号的断点,使其暂时不起作用,但断点信息仍保留。
  • enable <breakpoint_number>:启用之前被禁用的指定编号的断点。

查看与打印

  • listl:显示当前执行位置附近的源代码,默认每次显示 10 行。也可指定行号(如l 50从第 50 行开始显示)或函数名(如l main显示main函数的代码)来显示特定内容。
  • print <expression>p <expression>:打印指定表达式的值,如p x打印变量x的值,p a + b打印a + b的计算结果。
  • display <expression>:每次程序停止时自动显示指定表达式的值,便于监控变量变化,如display i每次程序暂停时都会显示变量i的值。
  • undisplay <display_number>:删除指定编号的自动显示设置,编号可通过info display查看。
  • backtracebt:显当前的函数调用栈信息,帮了解程序的执行路径和各函数间的调用关系。
  • info locals:查看当前作用域内的局部变量及其值。
  • whatis <variable>:显示变量的类型。
  • ptype <variable>:显示变量详细的类型信息,对于结构体、类等复杂类型会展示其成员信息 。

观察点操作

  • watch <expression>:设置观察点,当指定的表达式的值发生变化时,程序暂停执行。
  • rwatch <expression>:设置只读观察点,当程序读取指定表达式的值时,程序暂停执行。
  • awatch <expression>:设置读写观察点,当程序读取或写入指定表达式的值时,程序暂停执行。

其他常用指令

  • set <variable>=<value>:设置变量的值,如set n = 10将变量n的值设置为 10。
  • return:强制从当前函数返回,可带返回值,如return 5使当前函数直接返回 5。
  • shell <command>:在不离开 Gdb 的情况下,执行 Linux shell 命令,如shell ls可列出当前目录下的文件和目录。
  • help <command>:查看指定 Gdb 命令的帮助信息,若不指定具体命令,会显示 Gdb 的总体帮助信息和命令分类。

Linux系统下调试的时候其实是有一种历史机制的,所以它再调试过程中可以进行直接回车接着进行!

 

相关文章:

  • JVM系统变量的妙用
  • 封装WPF中转换器常用用法封装
  • 北京凝思磐石系统6.0.80安装vm warea tools
  • 【鸿蒙5.0】关于使用卓易通的“文件互传”功能时提示单次导出数量限制为30的一种解决思路
  • UdpClient
  • Chat-TTS-UI:文字转语音 - 本地部署方案
  • 【K8s】 K8s Pod如何通过HostAliases字段配置Host
  • Jmeter下载及环境配置
  • LinuX---Shell脚本创建和执行
  • fastapi+angular实现Tcp在线聊天室功能
  • 大白话阐述react和vue高阶组件的概念、优势及应用场景,以及区别,给出简单高阶组件的实现代码
  • Django-ORM-select_related
  • 如何手动使用下载并且运行 QwQ-32B-GGUF
  • 文件上传安全
  • 大数据-spark3.5安装部署之standalone模式
  • 数据结构:栈的应用举例——进制转换
  • ACwing—跳台阶(bfs+dp+递归+记忆化搜索算法)
  • SpringBoot中使用AJ-Captcha实现行为验证码(滑动拼图、点选文字)
  • C语言零基础入门:嵌入式系统开发之旅
  • windows下安装docker desktop并指定安装目录及汉化
  • 内塔尼亚胡:以军将在未来几天“全力进入”加沙
  • 中保协发布《保险机构适老服务规范》,全面规范保险机构面向老年人提供服务的统一标准
  • 马上评丨火车穿村而过多人被撞身亡,亡羊补牢慢不得
  • 为证明我爸是我爸,我将奶奶告上法庭
  • 韩国执政党总统候选人更换方案被否决,金文洙候选人资格即刻恢复
  • 中国海外发展:今年前4个月销售665.8亿元,花费305亿元拿地