命令类型 命令 功能
启动/停止 run 启动程序
r
run 命令行参数 以传入参数的方式启动程序
run > 输出文件 将输出重定向到输出文件
continue 继续运行,直到下一个断点
c
kill 停止程序
quit 退出gdb
源代码 list 查看源代码
l
list 行号 显示指定行号代码
list 函数名 显示指定函数的代码
list - 往前显示代码
list 开始, 结束 显示指定区间的代码
list 文件名:行号 显示指定文件名的指定行代码
set listsize 数字 设置显示的代码行数
show listsize 查看一次显示的代码行数
directory 目录名 添加目录到源代码搜索路径中
dir 目录名
show directories 查看源代码搜索目录
directory
dir 清空添加到源代码搜索目录中的目录
断点管理 break 断点命令
b
break 函数名 为函数设置断点
break 代码行号 在某一代码行上设置断点
break 类名:函数名 在某个类的函数上设置断点
break 文件名:函数名 在文件名指定的函数上设置断点
break 文件名:行号 在文件名指定的代码行上设置断点
break *地址 在指定地址设置断点
break +偏移量 在当前代码行加上偏移量的位置设置断点
break -偏移量 在当前代码行减去偏移量的位置设置断点
break 行号 if条件 设置条件断点
tbreak 设置临时断点
watch 表达式 添加观察点
clear 删除所有断点
clear 函数 删除该函数的断点
clear 行号 删除行号对应的断点
delete 删除所有断点,包括观察点和捕获点
d
delete 断点编号 删除指定编号断点
delete 断点范围 删除指定范围断点
disable 断点范围 禁用指定范围的断点
enable 断点范围 启用指定范围断点
enable 断点编号 once 启用指定断点一次
执行 continue 数量 继续执行,忽略指定数量的命中次数
finish 跳出当前函数
step 逐语句执行
s
step 步数 逐语句执行步数
next 逐过程执行
n
next 数量 逐过程执行指定行数的代码
where 显示当前执行的具体函数和代码行
调用栈 backtrace 显示调用栈信息
bt
bt 栈帧数 显示指定数量的栈帧(从小到大)
bt -栈帧数 显示指定数量的栈帧(从大到小)
backtrace full 显示所有栈帧的局部变量
frame 显示当前帧
frame 帧编号 切换帧到指定编号的帧
f 帧编号
up 切换帧,将当前帧增大1
down 切换帧,将当前帧减少1
up 帧数量 切换帧,将当前帧增大指定数量切换帧,将当前帧减少指定数量
down 帧数量
查看信息 info frame 查看当前帧的信息
info args 查看当前帧的参数
info locals 查看当前帧的局部变量
info breakpoints 查看所有断点信息
info break
i b
info break 断点编号 查看指定断点编号的断点信息
info watchpoints 查看所有观察点信息
info registers 查看所有整型寄存器信息
info threads 查看所有线程信息
查看变量 x 地址 查看指定地址的内存
x /nfu 地址 以格式化的方式查看指定地址的内存
print 变量名 查看变量
p 变量名
p 文件名::变量名 查看指定文件的变量
ptype 变量 查看变量类型
ptype 数据类型 查看类型详细信息
gdb模式 set logging on 设置日志开关
set logging off
show logging
set logging file 日志文件 设置日志文件名,默认名称为gdb.txt
set print array on 数组显示是否友好开关,默认是关闭的
set print array off
show print array
set print array-indexes on 显示数组索引开关,默认是关闭的
set print array-indexes off
show print array-indexes
set print pretty on 格式化结构体,默认是关闭的
set print pretty off
show print pretty
set print union on 联合体开关,默认是关闭的
set print union off
show print union