gdb

启动 GDB

gdb object                ## 正常启动,加载可执行
gdb object core           ## 对可执行 + core 文件进行调试
gdb object pid            ## 对正在执行的进程进行调试
gdb                       ## 正常启动,启动后需要 file 命令手动加载
gdb -tui                  ## 启用 gdb 的文本界面(或 ctrl-x ctrl-a 更换 CLI/TUI)

帮助信息

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                  ## 允许某个之前被禁用的断点,让它生效
rbreak {regexpr}          ## 匹配正则的函数前断点,如 ex_* 将断点 ex_ 开头的函数
tbreak function|line      ## 临时断点
hbreak function|line      ## 硬件断点
ignore {id} {count}       ## 忽略某断点 N-1 次
condition {id} {expr}     ## 条件断点,只有在条件生效时才发生
condition 2 i == 20       ## 2号断点只有在 i == 20 条件为真时才生效
watch {expr}              ## 对变量设置监视点
info watchpoints          ## 显示所有观察点
catch exec                ## 断点在 exec 事件,即子进程的入口地址

运行程序

栈帧

代码浏览

浏览数据

目标文件操作

信号控制

线程调试

进程调试

汇编调试

历史信息

其他命令

GDB 前端

References

Last updated