【问题标题】:Dump memory in lldb在 lldb 中转储内存
【发布时间】:2014-02-02 04:04:06
【问题描述】:

正如site. 所述,当我想在 gdb 中转储内存时。

起点是0x1000,终点是0x2000

对于 lldb 开始是 0x1000 和结束 0x1200

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


主要问题是:如何在 lldb 中将内存区域从 0x1000 转储到 0x2000

【问题讨论】:

  • 似乎不是这样的问题
  • @tristan 好的,那么如何使用 lldb 将内存从 0x1000 转储到 0x2000
  • 注意:修复了 lldb-gdb.html 网页上的示例。

标签: gdb dump lldb


【解决方案1】:

以下对我来说很好用:

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

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

您还可以使用“计数”来说明要转储的字节数:

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

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

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

在 Xcode 中读取实际位置 0x1000 对我来说失败(“内存读取失败”),必须以某种方式保护。

关于文档中0x1200和0x2000的区别,我觉得只是一个小错误。

【讨论】:

  • 还需要注意的是,您不需要输入完整的 lldb 命令——只要它明确即可。 memory read --outfile /tmp/mem.txt --count 1000 0x6080000fe680 也可以输入为m r -o /tmp/mem.txt -c 1000 0x6080000fe680。为了清楚起见,在示例中使用命令的长形式很重要,但我也想展示人们可以使用的最短的独特形式,这样他们就认为不需要每天输入所有这些命令。另外,不要忘记 gdb compat mem 读取 cmds,例如x/32gx $pc,在谈到从 lldb cmd 行读取内存时。
  • 二进制格式。内存读取 --binary --outfile /tmp/bkey -c 162 0x165b35f4
猜你喜欢
  • 2020-04-03
  • 1970-01-01
  • 2018-11-26
  • 2015-02-26
  • 2019-01-07
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多