我正在使用LLDB,我想知道如何在内存中打印值0xb0987654?
答案 0 :(得分:55)
Xcode有一个非常好的内存浏览器窗口,它可以很好地显示内存地址的内容。它还允许您控制字节分组和显示的字节数,并向后或向前移动存储页面:
您可以按⌘^⌥⇧M(Xcode 9及更早版本中的⌘⇧M)访问它
或
调试 - >调试工作流程 - >查看内存
注意左下角的字段,您可以粘贴要检查的内存地址!
此处的文档:https://developer.apple.com/library/ios/recipes/xcode_help-debugger/articles/viewing_memory.html
答案 1 :(得分:41)
补充迈克尔的答案。
我倾向于使用:
memory read -s1 -fu -c10000 0xb0987654 --force
将在调试器中打印。
希望这有帮助。
答案 2 :(得分:8)
" me
"是你正在寻找的命令。
例如,这个lldb命令:
me -r -o /tmp/mem.txt -c512 0xb0987654
将从您的内存地址复制512个字节到/tmp/mem.txt文件中。
答案 3 :(得分:1)
这是一个在lldb中显示固定长度类型数组的简单技巧。如果你的程序包含一个指向9个元素的long *变量,你可以声明一个包含9个long值的固定数组的结构类型,并将指针强制转换为该类型:
long *values = new long[9]{...};
(lldb) expr typedef struct { long values[9]; } l9; *(l9 *)values
(l9) $1 = {
values = {
[0] = 0
[1] = 1
[2] = 4
[3] = 9
[4] = 16
[5] = 25
[6] = 36
[7] = 49
[8] = 64
}
}
我在用C编码时使用typedef,在C ++中不需要它。
答案 4 :(得分:0)
例如,打印内存的长度为16x4字节。
x/16 0xb0987654