gdb速查表

Essential Commands

简记 描述
gdbprogram [core] 调试core文件
b[file:] function 设置断点在函数上
rrun简写 运行你的程序
btbacktrace 显示程序栈
pexpr 打印显示表达式的值
ccontinue 继续运行程序
nnext 下一行 跳过函数调用
sstep 下一行 步入函数调用

Starting GDB

命令 描述
gdb 开启gdb 没有debug文件
gdbprogram 开始调试可执行文件
gdbprogram   core dump file 调试core是程序非法执行后core dump后产生的文件
gdb   –help 命令行帮助选项

Stoping GDB

命令 描述

quitq or EOF | 退出GDB; eg C-d
INTERRUPT | 终止当前命令,eg C-c

Getting Help

命令 描述

help | 列出命令的类型
help class | 命令类型的描述
help command | 命令描述

Executing your Program

命令 描述

runarglist | 使用arglist开始程序
run   | 使用当前参数列表开始程序
run outf | 使用input output开始程序
kill | 结束运行程序
ttydev |使用dev作为标准输入输出为下一次的run
set args arglist | 为下一次run指定arglist
set args   | 指定空参数列表
show args   | 显示参数列表
show argsvar | 显示环境中var的值
set envvar string | 设置环境变量var=string
unset envvar | 移除环境变量var

Shell Commands

命令 描述

cddir | 改变当前目录到dir
pwd   |打印当前目录
make   | 调用 make
shellcmd | 执行shell 命令串

Breakpoint and Watchpoints

命令 描述

break[file:] line | 设置断点在fileline行处
b[file:] line |eg: break mian.c :37.
break[file:] func | 设置断点在filefunc
break +offset or -offset | 设置断点在offset行距离当前停止
break*addr | 在地址addr处设置断点
break…if   expr | 设置条件断点在expr不为0的时候
tbreak   … | 临时断点 在到达后无效
rbreak[file:]regex | 设置在所有函数匹配 regexfile
watchexpr | 设置一个观察点对表达式expr
catchevent | 设置在event上能够被catch,throw,exec,fork,vfork,load,or unload.
| |
info break | 显示定义的断点
info watch | 显示定义的观察点
| |
clear | 删除调断点在下一个描述上
clear[file:]fun | 删除在fun()入口的断点
clear[file: ]line | 清除第line行的断点
delete[n] | 删除断点n[或者断点n]
disable[n]| 暂停第n个断点
enable[n] | 开启第n个断点

Execution Control

命令 描述

continue [count] | 继续执行,到下一个断点处或运行结束
c[count] | continue简写
step[count] | 单步调试如果有函数调用,则进入函数
s[count] | step简写
stepi[count] | 单步执行一条机器指令
si[count] | stepi 简写
next[count] | 执行下一行包括函数调用
n[count] | next 简写
nexti[count] | 执行下一条机器指令而不是原始行
ni[count] | nexti 简写
until[location] | 运行至某行,不仅仅用来跳出循环
finish   | 运行程序直到当前函数完成返回,并打印函数返回时的堆栈地址返回值及参数值
jumpline | 重新执行在指定的行数或地址
jump*address |

Display

命令 描述

print   [/f] [expr] | 显示表达式expr的值
p   [/f] [expr] | 格式化f 详细
x  [N u f] expr | 查看内存的 /后可以指定格式化显示
whatis   | 查询变量或函数

Source Code

命令 描述

dir   names | 添加目录名names到源路径
dir   | 清理源路径
show dir   | 显示当前源路径
whatis   | 查询变量或函数
list   | 显示下十行源代码或者将接着上一次 list 命令的输出下边的内容
list  - | 显示前十行
list   lines | 将显示当前文件以lines为中心的前后10行代码
info line   num | 显示编译代码在num行处开始结束地址
info source   | 显示源文件的名字
info sources   | 显示所有源文件在使用中
forw   regex | 搜索regex在下面源码中

GDB Quick 查询卡片

GDB QUICK REFERENCE

参考资料

http://www.yolinux.com/TUTORIALS/GDB-Commands.html
https://sourceware.org/gdb/onlinedocs/gdb/
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html