2023-02-15  2024-09-18    578 字  2 分钟

连接远程调试

1target remote localhost:1234

查看内存

1x/<n/f/u> <addr>
2
3x /8xb 0xffff80000002fff0
4# 以16进制方式查看0xffff80000002fff0处8字节内容

n

从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。

f

  • x 按十六进制格式显示变量
  • d 按十进制格式显示变量
  • u 按十十进制格式显示无符号变量
  • o 按十八进制格式显示变量
  • t 按十二进制格式显示变量
  • a 按十十六进制格式显示变量
  • i 指令地址格式
  • c 按字符格式显示变量
  • f 按浮点数格式显示变量

u

表示一个地址单元的长度

  • b 表示单字节
  • h 表示双字节
  • w 表示四字节
  • g 表示八字节

断点

1break 16          # 在源程序第16行
2break func        # 在函数func()入口处
3break *address    # 在地址address处

查看断点信息

1info break        # 查看断点信息

清除断点

1delete n    # 清除n号断点

运行程序

1r/run

单条语句调试

1n/next

继续运行程序

1c/continue

打印变量的值

1p i
2print i

查看函数堆栈

1bt

退出GDB

1q

暂停

1ctrl+c

单步运行

1si/ni

查看当前寄存器和断点

1info reg/registers
2info b/break

查看当前执行以及之后的汇编指令

1display /8i $pc   # 8行
2display /10i $pc  # 10行

layout

  • layout src:显示源代码窗口
  • layout asm:显示汇编窗口
  • layout regs:显示源代码/汇编和寄存器窗口
  • layout split:显示源代码和汇编窗口
  • layout next:显示下一个layout
  • layout prev:显示上一个layout
  • Ctrl + L:刷新窗口
  • Ctrl + x,再按1:单窗口模式,显示一个窗口
  • Ctrl + x,再按2:双窗口模式,显示两个窗口
  • Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。

除另有声明外本博客文章均采用 知识共享 (Creative Commons) 署名 4.0 国际许可协议 进行许可转载请注明原作者与文章出处