我知道我们可以使用几个命令来访问和读取内存:例如,print、p、x…

但是如何更改任何特定位置的内存内容(在GDB中调试时)?

推荐答案

最简单的方法是设置程序变量(参见GDB: assignment):

(gdb) l
6       {
7           int i;
8           struct file *f, *ftmp;
9
(gdb) set variable i = 10
(gdb) p i
$1 = 10

或者,您可以只按地址更新任意(可写)位置:

(gdb) set {int}0x83040 = 4

还有更多.读the manual.

C++相关问答推荐

错误:八进制常数中的数字9无效

如何将匿名VLA分配给指针?

错误:C中需要参数声明符

球体—立方体重叠:无、部分或全部?

如何创建由符号组成的垂直结果图形?

警告:C++中数组下标的类型为‘char’[-Wchar-subpts]

ARM64 ASIMD固有的加载uint8_t* 到uint16x8(x3)?

二进制计算器与gmp

为什么cudaFree不需要数据 struct 的地址?

Sizeof(&Q;字符串&Q;)的正确输出是什么?

编译器如何处理具有更复杂值的枚举?

接受任何参数的函数指针是否与接受不同参数的函数兼容

C-try 将整数和 struct 数组存储到二进制文件中

合并对 struct 数组进行排序

如何在C中用bool进行文件I/O?

即使客户端不发送数据,也会发生UNIX套接字读取

使用 _Atomic float 时,MSVC 编译的代码会命中调试断言

memcmp 是否保证按顺序比较字节?

是否可以在多字 C 类型中的任何位置混合存储和类型限定符?

如何在 C 中的 Postgres 函数的表中 for 循环