工作环境相关命令
命令格式 | 含义 |
---|
set args 运行时的参数 | 指定运行时的参数,如 set args 2 |
show args | 查看设置好的运行参数 |
path dir | 设定程序的运行路径 |
show paths | 查看程序的运行路径 |
set environment var[=value] | 设置环境变量 |
set var=value | 修改运行时变量的值 |
show environment [var] | 查看环境变量 |
cd dir | 进入到dir目录,相当于shell中的cd命令 |
pwd | 显示当前工作目录 |
shell command | 运行shell的command命令 |
设置断点和恢复命令
命令格式 | 含义 |
---|
info b | 查看所设置的断点 |
break(b) [行号|函数名] <条件表达式> | 设置断点 |
tbreak(b) [行号|函数名] <条件表达式> | 设置临时断点,到达后自动删除 |
delete [断点号] | 删除指定断点 |
disable [断点号] | 停止指定的断点名,使用info b 仍然能查看此断点。同delete 一样,省略断点号则停止所有断点 |
enable [断点号] | 激活指定断点,省略则激活所有断点号 |
condition [断点号] <条件表达式> | 修改对应断点的条件 |
ignore [断点号] <num> | 在程序执行时,忽略对应断点n次 |
step(s) | 单步恢复程序运行,且进入函数调用 |
next(n) | 单步恢复程序运行,但不会进入函数调用 |
until(u) 行号 | 跳到指定行 |
finish | 运行程序,直到当前函数完成返回 |
continue(c) | 继续执行函数,直到函数结束或遇到新的断点 |
查看源码相关命令
命令格式 | 含义 |
---|
list(l) <行号>|><函数名> | 查看指定位置代码 |
file [文件名] | 加载指定文件 |
forward-search 正则表达式 | 源代码前后搜索 |
reverse-search 正则表达式 | 源代码向前搜索 |
show directories | 显示定义了的源文件搜索路径 |
info file | 显示加载到gdb 内存中的代码 |
disassemble 函数名 | 查看指定函数的反汇编代码 |
查看运行数据相关命令
命令格式 | 含义 |
---|
print(p) 表达式|变量 | 查看程序运行时对应表达式和变量的值 |
x /<n/f/u> <addr> | 查看内存变量内容。其中n 为整数表示显示内存的长度,f 表示显示的格式(如:d 表示十进制,x 表示16进制,o 表示八进制,t 表示二进制),u 表示从当前的地址往后请求显示的字节数,<addr>表示变量的内存的地址 |
display 表达式 | 设定在单步运行或其他情况中,自动显示的对应表达式的内容(如:display /i $pc 显示c代码和汇编代码) |
操作实例
添加删除断点
(gdb) b 5 # 在第五行加个断点
Breakpoint 1 at 0x400483: file src/gdb_test.c, line 5.
(gdb) info b # 查看所有的断点的信息
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000400483 in main at src/gdb_test.c:5
(gdb) delete 1 # 根据断点的编号删除断点
(gdb) info b # 再次查看,可以发现断点已经没了
No breakpoints or watchpoints.
打印变量
(gdb) p a
$1 = 1
(gdb) p &a
$2 = (int *) 0x7fffffffe454
(gdb) x /d 0x7fffffffe454 # 十进制方式输出
0x7fffffffe454: 1
(gdb) x /x 0x7fffffffe454 # 十六进制输出
0x7fffffffe454: 0x00000001
(gdb) x /o 0x7fffffffe454 # 八进制输出
0x7fffffffe454: 01
(gdb) x /t 0x7fffffffe454 # 二进制输出
0x7fffffffe454: 00000000000000000000000000000001