gdb 连接
gdb a.out 或者进入 gdb 后,target remote ip:port
配置
- 全局配置(安装 gdb-dashboard)
wget -P ~ https://git.io/.gdbinit
添加 set auto-load safe-path /
到~/.gdbinit
的第一行
- 项目配置 通过项目文件夹内的 .gdbinit 写好初始配置
控制流
b <函数名>
在函数进入时设置断点
starti
启动程序,并在第一条指令上暂停
n
执行下一行代码,不进入函数
ni
不进入汇编语句,单步执行源代码的下一条语句
s
执行下一行代码,进入函数
si
步入汇编语句,进入汇编级别的单步执行
c
continue 继续执行
查看状态
如果没有安装 gdb-dashboard
,可以通过 layout
指令来呈现寄存器等信息,具体查看 help layout
使用 x/<格式> <地址>
来查看内存,例如 x/8i 0x80200000
表示查看 0x80200000
起始的 8 条指令。具体格式查看 help x
bt f
backtrace full,打印堆栈信息
info inferiors
打印进程/线程信息
!cat /proc/15870/maps
打印进程的内存信息
p/a
将变量解释为指针 address,使用十六进制打印
p/c
将变量解释为字符 char,打印为字符
p/o
使用八进制打印变量
p/x
使用十六进制打印变量
p/u
将变量解释为无符号整数 unsigned,使用十进制打印
p/s
将变量解释为字符串,打印输出
help x 查看全部:
场景(debug 某个可执行文件)
file user/call.o
b main