无法在 gdb 中找到更改的内存内容

Failed to find changed memory content in gdb

我正在调试 x86 32bit 二进制程序。而当我尝试执行下面的指令时,在使用gdb调试时,我在buf对应的内存中找不到任何内存更新。 ( buf 分配在 .bss 部分)。

... 
movl [=10=]x4E713,buf(,%eax,0x4)
add [=10=]x1,%eax
...

当我在gdb中执行上面的代码时,我做了这些:

x/10x &buf

令我惊讶的是,即使执行了上面的代码,buf的内容仍然是这样的(假设eax的值为):

0xf7fb6ef0 <buf>:       0x00000000      0x00000000      0x00000000      0x00000000
0xf7fb6f00 <buffer>:    0x00000000      0x00000000      0x00000000      0x00000000
0xf7fb6f10 <buffer>:    0x00000000      0x00000000

地址 0xf7fb6ef0 不包含值 0x4e713 吗?

我清楚了吗?谁能给我一些帮助?

您看到的 buf 可能指的是另一个同名符号,或者 gdb 以某种方式获取了错误的地址。反汇编gdb中的指令,验证实际地址。

你也可以试试info variables ^buf$