gdb高级命令

工作环境相关命令

命令格式含义
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

标签: linux, c, gdb

添加新评论