一、什么是GDB
GDB是由GNU软件系统社区提供的调试工具,GDB主要帮助程序员完成下面四个方面的功能。
- 启动程序,按照自定义的要求随心所欲地运行程序
- 让被调试的程序在所指定的断点住停住
- 当程序停住时,可以检查此时程序中的变量内容
- debug
二、如何使用GDB进行调试
- 在生成可执行文件是选择-g选项生成调试信息,并且保证在使用gdb调试时源文件就在当前目录下。
- 通过gdb 可执行文件名字,这一命令来启动gbd进行调试
![bed5158cc8c1090aa5961a1ccd626b38.png](https://i-blog.csdnimg.cn/blog_migrate/7121a8369abda74f4fba6d437cfe71a2.png)
三、GDB常用指令
- 启动和退出
启动:gdb 可执行程序
退出:quit
- 给程序设置参数/获取设置的参数
set args 参数列表
show args
- GDB使用帮助
help
- 查看当前文件代码(默认是main函数所在的文件)
list/l (从默认位置显示)
list/l 行号 (从指定的行居中显示)
list/l 函数名 (从指定的函数居中显示)
- 查看非当前文件代码
list/l 文件名:行号 (从指定的行居中显示)
list/l 文件名:函数名 (从指定的函数居中显示)
- 设置/显示一次显示多少行
show list/listsize
set list/listsize 行数
- 运行GDB程序
start 启动程序,停止在第一行
run 启动程序,遇到第一个断点停下来
- 继续运行,到下一个断点停止
c/continue
- 向下执行一行代码(不会进入函数体)
n/next
- 变量操作
显示变量值 print/p 变量名
显示变量类型 ptype 变量名
- 向下单步调试(遇到函数进入函数体)
s/step
finish(跳出函数体)
- 自动变量操作
display 变量名 跟踪显示某个变量
i/info display 显示正在跟踪的变量信息
undisplay 编号 取消对应编号的跟踪显示
- 其他操作
set var 变量名字=值 改变变量的值
until (直接跳出循环,只有在循环体的一轮语句执行完处该命令才有效)