2013-05-03 57 views
0

我在玩GDBx/<op> $var是查看当前值的命令吗?我不知道是什么导致x/d $rbx的值从28变为-5604的命令顺序,因为我没有采取任何新的步骤使用stepi或任何东西。任何iea?我在哪里更改了寄存器变量值?

(gdb) x/s $rbx 
0x7fffffffe718: "\034\352\377\377\377\177" 
(gdb) x/d $rbx 
0x7fffffffe718: 28 
(gdb) x/s $rbx 
0x7fffffffe718: "\034\352\377\377\377\177" 
(gdb) x/1ws $rbx 
0x7fffffffe718: U"\xffffea1c翿" 
(gdb) x/1wd $rbx 
0x7fffffffe718: -5604 

(gdb) x/d $rbx 
0x7fffffffe718: -5604 

(gdb) x/s $rbx 
0x7fffffffe718: "\034\352\377\377\377\177" 
(gdb) x/d $rbx 
0x7fffffffe718: 28 
+2

在我看来像gbd首先设置为一个字节单位大小(0x1c是十进制28)。然后,当您将其更改为字(4字节)大小时,它将使用整数值0xffffea1c,即当打印为带符号的十进制数时,它的值为-5604。 – Michael 2013-05-03 09:52:38

回答

0

我不知道是什么原因造成的x/d $ RBX的值在地址0x7fffffffe718从28更改为-5604

内存中的值具有改变。

默认情况下,GDB检查的字节数有所变化。