在lldb中转储内存

use*_*959 7 gdb dump lldb

如本网站所述.当我想在gdb中转储内存.

起点是0x1000结束0x2000.

对于lldb,启动即0x1000结束0x1200.

有这个原因还是只是一个错误?


主要问题是:我如何转储一个存储区域从0x10000x2000在LLDB?

Don*_*bal 15

以下工作对我来说很好:

    (lldb) memory read --outfile /tmp/mem.txt 0x6080000fe680 0x6080000fe680+1000
Run Code Online (Sandbox Code Playgroud)

从给定的起始地址以十六进制格式转储1000字节的内存到/tmp/mem.txt.使用--binary作为二进制格式.

您还可以使用'count'来表示要转储的字节数:

    (lldb) memory read --outfile /tmp/mem.txt --count 1000 0x6080000fe680
Run Code Online (Sandbox Code Playgroud)

如果您在Xcode调试环境中并且有一个名为'note1'的变量,您还可以使用:

    (lldb) memory read --outfile /tmp/mem.bin note1 note1+100
Run Code Online (Sandbox Code Playgroud)

在Xcode的实际位置读取0x1000失败("内存读取失败"),必须以某种方式保护.

至于文档中0x1200和0x2000之间的区别,我认为这只是一个小错误.

  • 二进制格式。内存读取 --binary --outfile /tmp/bkey -c 162 0x165b35f4 (3认同)
  • 另外有用的是要注意,您不需要输入完整的lldb命令 - 只有它足够明确.`memory read --outfile /tmp/mem.txt --count 1000 0x6080000fe680`也可以作为`mr -o /tmp/mem.txt -c 1000 0x6080000fe680`输入.为了清楚起见,在示例中使用长形式的命令非常重要,但我还要展示人们可以使用的最短的独特形式,这样他们就不会认为他们需要每天输入所有这些形式.另外,当谈到从lldb cmd行读取内存时,不要忘记gdb compat mem读取cmds,例如`x/32gx $ pc`. (2认同)