gdb简单使用调试
gdb 可执行程序 注意调试可执行程序的时候编译成可执行程序一定要加参数-g(生成调试信息)
进入gdb调试环境的命令:
普通调试:
r 运行可执行程序,如果断点了就运行到第一个断点处停止
c 继续执行程序,直接运行到下一个断点或者到程序结束
b 行号 断点到这一行
b 函数名称 断点到这个函数
d 编号(delete breakpoint) 删除断点,断点编号从1开始
s 单步跟踪进入,如果执行函数时会跟进去
n 单步跟踪,如果执行函数时不会跟进去,而是直接执行完函数
p 变量名称 打印你想查看的变量值
l 行号或者(file:行号) 查看源码,列出源码
ctrl+a+x 断点同步源代码,非常好用
info break 可列出所有断点信息,info break 后也可设置要查看的break num如:
info break 1 列出断点号是1的断点信息
delete可删除单个断点,也可删除一个断点的集合,这个集合用连续的断点号来描述。
例如:
delete 1
delete 1-10
i 显示各类信息,详细用help命令查看帮助文档
q 退出gdb调试
help 命令名称 查看命令帮助文档
汇编调试:
b *函数名称 汇编断点调试
b *代码地址 汇编断点调试
si 汇编单步跟踪进入
ni 汇编单步跟踪
display display设置程序中断后想显示的数据及其格式 例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令 “display /i $pc”
其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用
undisplay取消原先的display设置,编号从1开始递增
普通调试例子
用gdb调试a.out
l 1
b add
ctrl+a+x
p c
q