在lldb中转储内存

11

如此网站所述,当我想在gdb中转储内存时。

起始点是0x1000,结束点是0x2000

对于lldb,起始点是0x1000,结束点是0x1200

这是出于什么原因还是只是一个错误?


主要问题是:如何在lldb中转储从0x10000x2000的内存区域?


似乎不是一个Stack Overflow的问题。 - tristan
@tristan 好的,那么如何使用lldb从0x1000到0x2000转储内存? - user3192959
1
注意:修复了lldb-gdb.html网页上的示例。 - Jason Molenda
1个回答

20

以下对我来说运作良好:

    (lldb) memory read --outfile /tmp/mem.txt 0x6080000fe680 0x6080000fe680+1000

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

您也可以使用“count”指定要转储多少字节:

    (lldb) memory read --outfile /tmp/mem.txt --count 1000 0x6080000fe680

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

    (lldb) memory read --outfile /tmp/mem.bin note1 note1+100

在 Xcode 中,我在实际位置 0x1000 处读取失败("memory read failed"),必须以某种方式进行保护。

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


2
还有一点需要注意的是,您不需要输入完整的lldb命令 - 只需要足够清晰明了即可。例如memory read --outfile /tmp/mem.txt --count 1000 0x6080000fe680也可以输入为m r -o /tmp/mem.txt -c 1000 0x6080000fe680。在示例中使用命令的长格式很重要,以确保清晰易懂,但我也喜欢演示人们可以使用的最短唯一形式,这样他们就不会认为自己需要每天都输入那么多。此外,在讨论从lldb命令行读取内存时,不要忘记gdb兼容的mem read命令,例如x/32gx $pc - Jason Molenda
4
二进制格式。内存读取 --binary --outfile /tmp/bkey -c 162 0x165b35f4 - KunMing Xie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接