假设EAX包含指向某个值的指针(双字)。
我想做的是检查这个值,即写一个像x /1wx [eax]
这样的表达式。
然而,GDB在表达式中写[eax]
时抱怨说语法错误。
如何在GDB中使用指针?
答案 0 :(得分:5)
正如另一个答案所指出的那样,你可以通过$ eax查看该特定寄存器。
(gdb) x /1wx $eax
0x400523d <main>: 0xe5894855
'info reg'将提供包含大量有用信息的注册转储。
你也可以使用gdb来取消引用指针。
(gdb) print /x *(int*)0x400523d
$3 = 0xe5894855
我在调试时经常使用这种方法。在挖掘复杂的类/结构内部时,它非常有用。一系列指针经常被简化,但只是抓住地址并查看取消引用。
答案 1 :(得分:4)
您可以使用$
之前的常用名称来引用寄存器。例如
print $rax
打印rax
值或
print *$rax
将rax
中的值取消引用作为指针。