GDB 使用

2019-02-19

Gdb 常用命令方法。


1. gdb

1.1. 基础命令

命令

图片来源:GDB 从裸奔到穿戴整齐

详细文档通过命令查看

1
man gdb
命令 操作
r 运行调试
n 下一步
c 继续运行
ctrl + c 中断信号
c/continue 中断后继续运行
s 进入一个函数
finish 退出函数
l 列出代码行
b 断点
显示断点列表 info b
删除断点 delete
清除断点 clear
until 跳至行号
until number
p 打印
打印数组信息 p *array@len
p/x 按十六进制格式显示变量
bt/backtrace 堆栈bt <-n>
-n表一个负整数,表示只打印栈底下n层的栈信息。
f/frame 进入指定堆栈层
f number
thread apply all bt 显示线程所有堆栈
attach 绑定进程调试
attach -p pid
detach 取消绑定调试进程
disassemble 看二进制数据
disassemble func
x 查看内存
focus 显示源码界面
display 显示变量
info registers / register <reg> 查看寄存器
info win 窗口切换
fs cmd
fs src

1.2. 内存命令

可以用 examine 命令(简写 x ) 来查看内存地址中的值,x 命令语法:

1
x/<n/f/u> <addr>

n/f/u三个参数可以一起使用

命令 描述
n 正整数,内存的长度
f 表示显示的格式,如果地址所指的是字符串,那么格式可以是 s,地址是指令地址,格式是 i
u 从当前地址往后请求的字节数,GDB默认是4个bytes。u 参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节

格式

命令 操作
x 按十六进制格式显示变量
d 按十进制格式显示变量
u 按十六进制格式显示无符号整型
o 按八进制格式显示变量
t 按二进制格式显示变量
a 按十六进制格式显示变量
c 按字符格式显示变量
f 按浮点数格式显示变量

1.3. tui

1
info win

gdb 可视化,layout 用于窗口操作

1
2
3
4
5
6
7
8
9
10
11
12
13
(gdb) help layout
Change the layout of windows.
Usage: layout prev | next | LAYOUT-NAME
Layout names are:
   src   : Displays source and command windows.
   asm   : Displays disassembly and command windows.
   split : Displays source, disassembly and command windows.
   regs  : Displays register window. If existing layout
           is source/command or assembly/command, the
           register window is displayed. If the
           source/assembly/command (split) is displayed,
           the register window is displayed with
           the window that has current logical focus.
  • 查看具体窗口
命令 操作
layout src 显示源代码窗口
layout asm 显示汇编窗口
layout regs 显示源代码/汇编和寄存器窗口
layout split 显示源代码和汇编窗口
layout next 显示下一个layout
layout prev 显示上一个layout

2. 参考