GDB常用命令汇总

1 设置参数

  • 启动GDB时设置参数
gdb --args main_args arg1 arg2 arg3

--args 后面紧跟可执行文件的名称 main_args,然后是要传递给 main 函数的参数 arg1arg2arg3

  • 在GDB会话中设置参数
gdb main_args

在 GDB 提示符下使用 set args 命令设置参数:

(gdb) set args arg1 arg2 arg3

2 执行到函数的某一行

2.1 设置断点

可以通过设置断点的方式来实现运行到函数某一行,例如:

break func:6   #在func函数第6行打下断点
2.2 until命令

也可以使用until命令,但是until命令是运行到函数内部之后才可以使用的命令

break func       # 在func函数设置断点
continue         # 运行至func函数触发断点
until 6          # 运行到func函数的第6行

3 设置断点

GDB设置断点常用的两种方式,一种是直接使用break命令,例如在main.c文件第10行设置断点

break main.c:10

另外一种是我们可以在内存的摸个位置设置断点,例如:

b *0x00005555555553a0

4 打印

GDB的x命令可以用于打印内存的值,方便查看内存是否被写入。

x/[数量][格式][单位] <内存地址或表达式>

格式如下:

符号 说明 示例
x 十六进制整数 0x7fffffffe3a0
d 十进制有符号整数 -12345
u 十进制无符号整数 4294967295
o 八进制整数 01234567
t 二进制(二进制的“字面”) 01100001
a 地址(符号+偏移) main+0x10
c ASCII 字符 'A'
s 字符串 "Hello World"
i 汇编指令 mov eax, 0x1

单位如下:

符号 说明 大小(字节)
b 字节(byte) 1
h 半字(half-word) 2
w 字(word) 4(32位系统)
g 双字(giant) 8(64位系统)

例如:

(gdb)  x /16xb 0x5555555592a0
0x5555555592a0: 0x07    0x08    0x09    0x04    0x05    0x06    0x07    0x08
0x5555555592a8: 0x09    0x0a    0x01    0x02    0x03    0x04    0x05    0x06

5 查看函数源码

例如查看main函数的代码:

(gdb) list main
posted @ 2025-02-18 17:44  cockpunctual  阅读(274)  评论(0)    收藏  举报