LLDB读取字符串

时间:2018-07-29 01:03:23

标签: xcode debugging lldb

我正在尝试使用lldb进行调试。

断点规则:

breakpoint set --method ‘+[NSUUID UUID]’

Breakpoint 2: where = Foundation`+[NSUUID UUID], address = 0x0000000182824360
Process 850 stopped

thread #1, queue = ‘com.apple.main-thread’, stop reason = breakpoint 1.1 2.1
frame #0: 0x0000000182824360 Foundation+[NSUUID UUID] Foundation+[NSUUID UUID]:
-> 0x182824360 <+0>: stp x29, x30, [sp, #-0x10]!
0x182824364 <+4>: mov x29, sp
0x182824368 <+8>: adrp x8, 197124
0x18282436c <+12>: ldr x1, [x8, #0x6d8]

如何阅读或打印每一行?

我的意思是:

(lldb) p (char *) 0x182824360
(char *) $0 = 0x0000000182824360 “\xfffffffd{\xffffffbf\xffffffa9\xfffffffd\x03”

谢谢您的时间。

1 个答案:

答案 0 :(得分:1)

如果内存中有c字符串的地址,则可以使用x/s ADDR命令将其显示为字符串。但是在这种情况下,您将使用此方法的地址作为参数-如果在内存中打印汇编指令,则不会得到可读的字符串。您可以使用disassemble -b -f之类的命令在方法中查看每个指令的字节。

如果要查看该方法的源代码,则需要有权访问该源。鉴于这看起来像一个AppKit方法,因此您不太可能访问源。如果要检查或了解此方法的作用,则必须在汇编语言级别进行。