Gdb

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
updatedupdated2024-04-122024-04-12