使用GDB调试

前言
程序天天写,Bug改不完,掌握Debug的方式还是非常的有用的,而GDB作为一种调试工具在Linux下这种需要使用命令行执行的情况下还是非常有用的。
下载
有时候,Linux的某些系统是自带GDB的,可以利用如下命令检查是否已经安装了GDB
1 | gdb --version |
如果输出了版本号就说明已经安装GDB了。
如果系统中没有GDB,可以使用Linux的包管理工具进行下载,具体取决与当前的系统,一些可以参考的安装命令如下所示:
1 | #使用yum进行安装 |
1 | #使用apt安装 |
1 | #使用dnf进行安装 |
一般情况下Windows下会提供图形化的工具,因此GDB被提起的比较少,但是在Windows下安装GDB也是可行的,例如可以使用Scoop进行安装:
1 | scoop install gdb |
scoop的配置教程见:Scoop环境配置记录
当然如果不想通过Scoop安装也是可以的,可以通过MinGW64进行下载安装,这里可以参考之前的C语言环境配置的教程,步骤几乎完全一样:
C语言环境配置(最直接)
使用
GDB主要是通过命令行进行调试的,可以对C、C++、Go、java、php等多种语言进行调试。使用GDB的上手难度相对比较高,不过没有关系,慢慢尝试即可。
如果遇到使用上的问题可以使用如下命令获取帮助信息:
1 | gdb -h |
当然仅仅依靠这个帮助信息还是很难完全的掌握GDB的使用方式,下面是作者尝试性的总结了一些内容。
开始调试:
1
2gdb ./executable_file
#executable_file是需要进行调试的文件编译生成的可执行文件设置断点:
1
2b breakpoint_information
#breakpoint_information指定了断点的信息,比如行号,函数位置等1
2info b
#查看断点的信息1
2
3
4d breakpoint_count
#删除编号为breakpoint_count的断点,需要注意这里的breakpoint_count不是行号
#如果要删除所有的断点,则使用命令:
#d breakpoints1
2
3
4enable b breakpoint_count
#启用编号为breakpoint_count的断点
#启用所有的断点则为:
#enable b1
2
3
4disable b breakpoint_count
#禁用编号为breakpoint_count的断点
#禁用所有的断点则为:
#disable b开启运行:
1
r
显示信息:
1
2p information
#information一般为你想要查看的信息,如变量的值等,需要注意的是这里的p只会打印一次1
2display information
#和上文不同,这里的信息在第一次执行后,会在后续每次停下来之后都会再展示一次。1
2undisplay information
#这里是取消跟踪,以后这些信息就不会再追踪了。1
2bt
#查看函数调用的信息1
2l line_count
#打印某一行的代码,line_count表示了行号继续执行
1
2c
#继续执行直到下一个断点1
2n
#逐过程执行1
2s
#逐语句执行修改变量
1
2set value_name = value
#value表示的是想要指定的变量的值,value_name表示变量名
7.执行函数直到退出
1 | finish |
- 退出GDB
1
quit
后记
通过上述的命令就基本可以进行程序的调试和运行了,后续会举例进行说明的。
- Title: 使用GDB调试
- Author: 呆呆的猪胖胖
- Created at : 2025-04-30 15:20:00
- Updated at : 2025-05-13 15:34:43
- Link: https://blog.cflmy.cn/2025/04/30/Technology/Debug/GDB/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments