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

1.gdb的安装

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

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

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

bash 复制代码
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系统下调试的时候其实是有一种历史机制的,所以它再调试过程中可以进行直接回车接着进行!

相关推荐
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
小宇宙Zz2 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信