You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
4.9 KiB

##############################################################################
# GDB CHEATSHEET (中文速查表) - by skywind (created on 2018/02/20)
# Version: 2, Last Modified: 2018/02/26 02:46
# https://github.com/skywind3000/awesome-cheatsheets
##############################################################################
##############################################################################
# 启动 GDB
##############################################################################
gdb object # 正常启动,加载可执行
gdb object core # 对可执行 + core 文件进行调试
gdb object pid # 对正在执行的进程进行调试
gdb # 正常启动,启动后需要 file 命令手动加载
gdb -tui # 用 tui 界面模式启动 gdb
##############################################################################
# 帮助信息
##############################################################################
help # 列出命令分类
help running # 查看某个类别的帮助信息
help run # 查看命令 run 的帮助
help info # 列出查看程序运行状态相关的命令
help info line # 列出具体的一个运行状态命令的帮助
help show # 列出 GDB 状态相关的命令
help show commands # 列出 show 命令的帮助
##############################################################################
# 断点
##############################################################################
break main # 对函数 main 设置一个断点,可简写为 b main
break 101 # 对源代码的行号设置断点,可简写为 b 101
break basic.c:101 # 对源代码和行号设置断点
break basic.c:foo # 对源代码和函数名设置断点
break *0x00400448 # 对内存地址 0x00400448 设置断点
info breakpoints # 列出当前的所有断点信息,可简写为 info break
delete 1 # 按编号删除一个断点
delete # 删除所有断点
clear # 删除在当前行的断点
clear function # 删除函数断点
clear line # 删除行号断点
clear basic.c:101 # 删除文件名和行号的断点
clear basic.c:main # 删除文件名和函数名的断点
clear *0x00400448 # 删除内存地址的断点
disable 2 # 禁用某断点,但是部删除
enable 2 # 允许某个之前被禁用的断点,让它生效
tbreak function|line # 临时断点
ignore {id} {count} # 忽略某断点 N-1 次
condition {id} {expr} # 条件断点,只有在条件生效时才发生
condition 2 i == 20 # 2号断点只有在 i == 20 条件为真时才生效
watch {expr} # 对变量设置观察点
info watchpoints # 显示所有观察点
##############################################################################
# 运行程序
##############################################################################
run # 运行程序
run {args} # 以某参数运行程序
set args {args} ... # 设置运行的参数
show args # 显示当前的运行参数
cont # 继续运行
step # 单步进入,碰到函数会进去
step {count} # 单步多少次
next # 单步跳过,碰到函数不会进入
next {count} # 单步多少次
stepi # 汇编指令级别单步进入
nexti # 汇编指令级别单步跳过
CTRL+C # 发送 SIGINT 信号,中止当前运行的程序
attach {process-id} # 链接上当前正在运行的进程,开始调试
detach # 断开进程链接
finish # 结束当前函数的运行
kill # 杀死当前运行的函数
##############################################################################
# 栈帧
##############################################################################
bt # 打印 backtrace
frame # 显示当前运行的栈帧
up # 向上移动栈帧(向着 main 函数)
down # 向下移动栈帧(远离 main 函数)
info locals # 打印帧内的相关变量
info args # 打印函数的参数
##############################################################################
# References
##############################################################################
https://gist.github.com/rkubik/b96c23bd8ed58333de37f2b8cd052c30
# vim: set ts=4 sw=4 tw=0 noet ft=gdb: