程序调试  |  GDB常用命令备忘录

2016-09-28  本文已影响490人  rh_Jameson

最近项目需要用到gdb调试程序, 鉴于每次用时都要google回忆下常用的命令,效率有点low,故整理份命令备忘录,如下:

GDB Layout命令

每次gdb时不知道程序跑到哪了,只能list?? 错, layout窗口才是王道!!

命令 功能
layout src 显示源码窗口
layout asm 显示汇编窗口
layout split 显示源码 & 汇编窗口
layout regs 显示汇编 & 寄存器窗口
layout next 下一个layout
layout prev 上一个layout
C-x 1 单窗口模式
C-x 2 双窗口模式
C-x a 回到传统模式

GDB 跳转执行命令

命令 功能
start 开始启动程序,并停在main第一句等待命令
step 执行下一行语句, 如语句为函数调用, 进入函数中
next 执行下一行语句, 如语句为函数调用, 不进入函数中
finish 连续运行到当前函数返回为止
continue 从当前位置继续运行程序
return 强制令当前函数返回
call func() 强制调用函数, 也可以用print func()
run 从头开始运行程序
quit 退出程序

注: call func() 与 print func() 的区别,在于调用void函数时, call func()没有返回值, 而print有~~

GDB调试输出命令

命令 功能
print 输出变量值 & 调用函数 & 通过表达式改变变量值
info var 查看全局 & 静态变量
info locals 查看当前函数局部变量
list 查看当前位置代码
backtrace 查看各级堆栈的函数调用及参数
set var 变量=xx 将变量赋值为xx

注:
p/x 3*i -- x for hexadecimal, o for octal, d for decimal, f for float, c for char, s for string

断点

命令 功能
b N_LINE 在第N_LINE行上设置断点
b func 在func函数上设置端点
delete breakpoints 删除断点
disable breakpoints 禁用断点
enable 断点号 启动端点
info breakpoints 查看断点列表
break foo if x>0 设置条件断点

观察点

当待观察点被读 或 被写时,程序停下来,并输出相关信息

命令 功能
watch 设置写观察点
rwatch 设置读观察点
awatch 设置读写观察点
info watchpoints 查看观察点列表

Display跟踪点

命令 功能
display var 每次停下来时,显示设置的变量var的值
undisplay 取消跟踪显示
info display 设置读写观察点
info watchpoints 查看跟踪列表
上一篇下一篇

猜你喜欢

热点阅读