使用寄存器指定要用LLDB读取的内存
问题描述:
我试图教自己汇编,并使用LLDB进行调试。到目前为止,这么好,但我想知道是否有快速的方法来检查存储在寄存器中的地址的内存?使用寄存器指定要用LLDB读取的内存
当然,我可以做
register read rbp
(例如),然后通过
memory read <address> ...
使用的地址,但我真的想直接在参数使用寄存器名到'记忆'命令(可能有一个偏移量)。这似乎是一件很自然的事情,但到目前为止我还没有找到任何有关这方面的信息。
答
您可以使用
(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
完美,谢谢! – 196884 2014-12-14 02:50:32
只是为了扩大唐的回答。如果你看看“x”的帮助,它会说参数是一个“地址表达式”的列表,如果你在“地址表达式”上运行帮助,它会告诉你“是一个解析为一个地址”。 lldb中的所有便利变量(包括寄存器)都以$为前缀。这就是为什么你必须在表达式中使用$。但你也可以在这里使用更多的通用表达式。请记住,命令行是以空格分隔的,因此您必须使用引号来保护空格。 – 2014-12-15 21:04:41