2014-12-13 48 views
0

我试图教自己汇编,并使用LLDB进行调试。到目前为止,这么好,但我想知道是否有快速的方法来检查存储在寄存器中的地址的内存?使用寄存器指定要用LLDB读取的内存

当然,我可以做

register read rbp 

(例如),然后通过

memory read <address> ... 

使用的地址,但我真的想直接在参数使用寄存器名到'记忆'命令(可能有一个偏移量)。这似乎是一件很自然的事情,但到目前为止我还没有找到任何有关这方面的信息。

回答

1

您可以使用

(lldb) x $eax 
0x799be060: f0 e6 1c 01 04 00 00 00 88 23 04 00 98 23 04 00 .........#...#.. 
0x799be070: a8 23 04 00 b8 23 04 00 00 00 00 00 00 00 00 00 .#...#.......... 

要看到显示例如存储器内容4花车,使用

(lldb) x/4f $eax 
0x799be060: 0.0000000000000000000000000000000000000288183643 
0x799be064: 0.00000000000000000000000000000000000000000000560519386 
0x799be068: 0.000000000000000000000000000000000000000380088195 
0x799be06c: 0.000000000000000000000000000000000000000380110616 
+0

完美,谢谢! – 196884 2014-12-14 02:50:32

+0

只是为了扩大唐的回答。如果你看看“x”的帮助,它会说参数是一个“地址表达式”的列表,如果你在“地址表达式”上运行帮助,它会告诉你“是一个解析为一个地址”。 lldb中的所有便利变量(包括寄存器)都以$为前缀。这就是为什么你必须在表达式中使用$。但你也可以在这里使用更多的通用表达式。请记住,命令行是以空格分隔的,因此您必须使用引号来保护空格。 – 2014-12-15 21:04:41