gdb调试
zach0ry

TAB:显示所有命令

image-20250716111343168

start:运行到程序入口处

run:运行完整个程序

🔍 x 命令的基本语法:

x/nfs address

  • n :要显示的内存单元个数(默认是 1)。
  • f :显示格式(format),比如十六进制、十进制、字符串等。
  • s :内存单元大小(size),比如字节、半字、字等。
  • address :要查看的内存地址(可以是变量名、寄存器、指针表达式等)。

f:输出格式(format)

x Hex(十六进制)
d Decimal(十进制)
u Unsigned decimal
o Octal(八进制)
t Binary(二进制)
f Floating point(浮点数)
a Address(地址,显示指针)
i Instruction(反汇编指令)
c Char(字符)
s String(字符串)

s:内存单元大小(size)

b byte(字节) 1 字节
h halfword(半字) 2 字节
w word(字) 4 字节
g giant word(双字) 8 字节

🧠 示例用法

1.查看地址 0x7fffffffe000 处的 4 个 4 字节数值,以十六进制显示:

1
x/4wx 0x7fffffffe000

输出

1
0x7fffffffe000: 0x00000001  0x00007fff  0x00000000  0x00000000

2. 查看地址 0x400500 处的 5 条汇编指令:

1
x/5i 0x400500

输出

1
2
3
4
5
0x400500:  push   %rbp
0x400501: mov %rsp,%rbp
0x400504: sub $0x10,%rsp
0x400508: mov %edi,-0x4(%rbp)
0x40050b: mov %rsi,-0x10(%rbp)

3. 查看栈顶指针 rsp 地址的内容(以 8 字节为单位,显示为十六进制):

1
x/gx $rsp

输出

1
x/gx $rsp

4. 查看地址 0x7fffffffe010 开始的字符串:

1
x/s 0x7fffffffe010

输出

1
0x7fffffffe010: "Hello, world!"

5.查看地址 0x601038 的 10 个字节,以十进制形式显示:

1
x/10db 0x601038

输出

1
0x601038: 72  101  108  108  111  44  32  119  111  114

:small_airplane:接收数据

函数 说明
recvall() 接收所有数据直到 EOF
recvline() 接收一行(以\n结尾)
recvuntil(delim) 接收数据直到遇到指定分隔符(如"Welcome!"
recvregex(regex) 接收数据直到匹配正则表达式
recv(n) 接收指定字节数的数据(阻塞直到收到 n 字节)