如此网站所述,当我想在gdb中转储内存时。
起始点是0x1000
,结束点是0x2000
。
对于lldb,起始点是0x1000
,结束点是0x1200
。
这是出于什么原因还是只是一个错误?
主要问题是:如何在lldb中转储从0x1000
到0x2000
的内存区域?
以下对我来说运作良好:
(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 的区别,我认为这只是一个小错误。
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