gdb常用的基本功能

本文介绍了一些gdb最常用的基本功能。

开始程序

1
2
3
> start
> run
> run arg1 arg2

start会在main函数处自动设置一个断点,而run不会。run后面可以加参数作为main函数的实参。

断点

设置断点

1
2
3
4
> break func_name
> break file.c:105
> break 105
> b ...

设置断点的方法一般会用到两种:根据函数名和根据源文件的行号。对应的方法为前两个,如果已经处在file.c文件中,可以直接用行号。
break可以用b代替。

处理断点

1
2
3
4
5
6
7
8
# 列出所有断点
> info break
# 关闭一个断点,断点号可用info break查看
> disable 3
# 重新打开一个断点
> enable 3
# 彻底删除一个断点
> del 3

变量

1
2
3
4
5
6
7
# 根据变量名打印变量
> print arg_name
> p arg_name
# 打印函数输入的变量
> info args
# 打印本地函数的变量
> info local

跳入另一个帧

1
2
3
4
5
6
# 先查看堆栈帧列表
> backtrace
> bt
# 根据编号跳转
> frame 2
> f 2

单步执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 单步执行一行,可进入另一个函数
> step
> s
# 执行下一行,不进入子函数,可能跳回一个循环的开头
> next
> n
# 让一个已经进入的循环可以直接运行通过到下一步
> until
> u
# 继续运行直到下一个断点或者程序结尾
> continue
> c
# 从当前函数立刻返回,可带参数
> ret
> ret 0