版权声明: https://blog.csdn.net/dadan1314/article/details/88060416
gdb启动
# 间接启动
gdb
(gdb) file <程序名>
或
(gdb) attach <进程pid>
# 直接启动
gdb <程序名>
gdb <程序名> <core>
gdb <程序名> <进程pid>
## 有时候需要sudo gdb
gdb命令
执行
# 从第一行开始,并停止
start
# 开始执行
run
# 继续执行
continue
# 逐过程
next
next n
# 逐语句
step
# 跳出,当前函数返回
finish
# 执行到指定位置
until <行号>
断点
# 列举所有断点信息 简写info b
info breakpoints
# 设置断点 简写 b
break <行号>
break <函数名>
break <文件名:行号>
# 删除断点 简写 d
delete <断点序号>
# 开断点
enable
enable <断点序号>
# 关断点
disable
disable <断点序号>
# 保存断点和导入断点
save breakpoint infob.bp
gdb <程序名> -x infob.bp
变量
# 打印程序变量值 简写p
print <变量名>
# 开启打印格式变量
set print pretty on
# 设置程序变量值
set var <变量名>=<值>
# 查看变量类型
whatis <变量名>
# 查看变量类型结构
ptype <变量名>
# 监视变量
info display
display <变量名>
undisplay <变量名序号>
堆栈
# 查看堆栈信息 简写 bt
backtrace
# 切换到栈编号为N的上下文中
frame n
# 查看当前函数调用栈帧的信息
info frame
代码查看
# 设置显示行数
set listsize n
# 获取显示行数
show listsize
# 显示指定位置代码
list <行号>
list <行号>,
list ,<行号>
list <函数名>
# 显示当前行后面和前面的源代码
list
list -
内存查看
# 查看a变量值
x &a
x /4bx <地址>
# b h w g 单字节 双字节 四字节 八字节
# x 十六进制
# d 有符号十进制
# u 无符号十进制
# o 八进制
# t 二进制
# a 地址
# c 字符
# f 浮点数