跳转至

Gdb

简介

gdb是GNU项目的调试器,支持很多语言,想要使用gdb调试,在编译时需要加入-g -o0选项。

常用命令

图形界面

gdb -tui
layout src
layout prev/next

源码相关

# 添加搜索路径
dir  搜索路径
# 修改源码路径,前提是知道原来的路径
set substitute-path from to

流程控制

r   # 开始启动,或重新启动
r a b c  # 指定程序需要的命令
c   # 继续运行
n   # 单步步进
s   # 单步步入
u linenum  # 执行到指定行
fin # 跳出函数

断点

# 下软件断点
b main
b filename:linenum
b Class::unction
# 列出断点
info b   # 简写  i b
# 删除断点
delete 断点编号
# 删除所有断点
delete
# 暂时禁用断点    
disable 断点编号
# 启用断点
enable 断点编号
# 设置条件断点
b filename:linenum if val==0

读取和写入内存

# 格式化结构体打印
set print pretty on
# 打印变量
p  变量名
p 'filename'::a
p 'functionname'::a
# 按16进制打印
p/x 变量
# 打印寄存器数据
p $ax

其他

# 重复上条指令
ENTER
# 清屏
shell clear
# 显示堆栈回溯
bt
# 切换当前堆栈上下文
f 堆栈编号

汇编级调试

# 实时显示寄存器
layout regs
# 打印下一条要执行的汇编代码
set disassemble-next-line on
# 转换成Intel汇编格式
set disassembly-flavor intel
# 单步执行,单步进入
ni /  si

本文总阅读量
回到页面顶部