【问题标题】:Using registers to specify memory to read with LLDB使用寄存器指定要使用 LLDB 读取的内存
【发布时间】:2014-12-13 16:09:28
【问题描述】:

我正在尝试自学汇编,并且正在使用 LLDB 进行调试。到目前为止,一切都很好,但我想知道是否有一种快速的方法来检查存储在寄存器中的地址处的内存?

当然可以

register read rbp

(例如),然后使用地址通过

memory read <address> ...

但实际上我想直接在“memory”命令的参数中使用寄存器名称(可能带有偏移量)。这似乎是一件很自然的事情,但到目前为止我还没有找到任何相关的信息。

【问题讨论】:

    标签: debugging lldb


    【解决方案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
    

    【讨论】:

    • 只是为了扩展唐的回答。如果您查看“x”的帮助,它会说参数是“地址表达式”的列表,如果您在“地址表达式”上运行帮助,它会告诉您这是“解析为一个地址”。 lldb 中的所有便利变量(包括寄存器)都以 $ 为前缀。这就是你必须在表达式中使用 $ 的原因。但您也可以根据需要在此处使用更通用的表达方式。请记住,命令行是用空格分隔的,因此您必须使用引号来保护空格。
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 2015-08-11
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    相关资源
    最近更新 更多