在GDB中读取带偏移量的IA32寄存器的语法?

时间:2016-10-23 19:07:55

标签: assembly x86 gdb cpu-registers

我有一个GDB语法问题......我很难学习IA32课程,而GDB很适合观看寄存器。但是,我经常看到寄存器引用的值加上偏移量。例如:

Route::delete('/subtask1/delete/{subtask}', 'TaskController@subtaskdestroy');

很容易看到%eax中的值:

Route::delete('/subtask1/delete/{{subtask}}', 'TaskController@subtaskdestroy');

我得到cmpl -8(%rbp), %eax " 八个字节,然后地址存储在%rbp,"但是我怎么看到GDB的价值呢?以下都不适用于我:

(gdb) p $eax
$1 = 5

我期待-8(%rbp)保持整数值7,但我无法确认。

顺便说一下,我应该说:我在我学校的Linux服务器上使用GNU gdb(GDB)Red Hat Enterprise Linux 7.6.1-80.el7。

有什么建议吗?提前谢谢!

-RAO

1 个答案:

答案 0 :(得分:4)

试试*(int*)($rbp - 8)。 GDB接受类似C语法的语法,必须使用强制转换来告诉它有多少字节组成你感兴趣的值。由于$rbp包含一个指针并且你想要取消引用该指针,因此必须取消引用。