无法在gdb

时间:2015-07-14 17:20:44

标签: assembly x86 gdb 32-bit att

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

... 
movl $0x4E713,buf(,%eax,0x4)
add $0x1,%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

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

1 个答案:

答案 0 :(得分:3)

据推测,您看到的buf引用了同名的另一个符号,或者gdb以某种方式选择了错误的地址。反汇编gdb中的指令,并验证实际地址。

您也可以尝试info variables ^buf$