成功连接手机进行LLDB动态调试,使用si单步之前使用 register read 读取寄存器值为
x0 = 0x0000000196f79880 (void *)0x000001a596f79921
x1 = 0x0000000000000000
x2 = 0x0000000000000000
x3 = 0x000000016fd6e0e0
x4 = 0x0000000000000010
x5 = 0x000000016fd6db3c
x6 = 0x0000000000000000
x7 = 0x000000016fd6dc9c
x8 = 0x0000000104810000 “lastPathComponent”
x9 = 0x0000000000000015
x10 = 0x0000000196cc7120 CoreFoundation__CFRuntimeObjCClassTable x11 = 0x000000230000003f x12 = 0x00000001482b4580 x13 = 0x000001a596cbaa49 x14 = 0x0000910a0cfb8b96 x15 = 0x00000000000000c8 x16 = 0x0000000195fea4d8 libobjc.A.dylib
object_getClass
x17 = 0x0000000184276534 CoreFoundation-[__NSCFBoolean retain] x18 = 0x0000000000000000 x19 = 0x00000001048a1000 x20 = 0x0000000196cbd300 _MergedGlobals + 16 x21 = 0x0000000000000003 x22 = 0x0000000000000001 x23 = 0x0000000000000001 x24 = 0x0000000000000000 x25 = 0x0000000196cbd2f0 _MergedGlobals x26 = 0x0000000196cbb790 (void *)0x000001a596cbb741 x27 = 0x0000000196cbd300 _MergedGlobals + 16 x28 = 0x00000001895c8496 "numberWithBool:" fp = 0x000000016fd6e830 lr = 0x00000001033d73f4 Aweme
___lldb_unnamed_symbol257590$$Aweme + 3232
sp = 0x000000016fd6e240
pc = 0x00000001033d7404 Aweme`___lldb_unnamed_symbol257590$$Aweme + 3248
cpsr = 0x60000000
之后执行si单步
(lldb) ni
Process 10162 stopped
- thread #1, queue = ‘com.apple.main-thread’, stop reason = instruction step over
frame #0: 0x00000001033d7408 Aweme___lldb_unnamed_symbol257590$$Aweme + 3252 Aweme
___lldb_unnamed_symbol257590$$Aweme:
→ 0x1033d7408 <+3252>: mov x2, x21
0x1033d740c <+3256>: bl 0x1034fadd4 ; symbol stub for: objc_msgSend
0x1033d7410 <+3260>: mov x28, x0
0x1033d7414 <+3264>: mov x0, x28
Target 0: (Aweme) stopped.
之后发现读取所有寄存器
(lldb) register read
General Purpose Registers:
x0 = 0x0000000196f79880 (void *)0x000001a596f79921
x1 = 0x00000001895cf8a4 “numberWithLongLong:”
x2 = 0x0000000000000000
x3 = 0x000000016fd6e0e0
x4 = 0x0000000000000010
x5 = 0x000000016fd6db3c
x6 = 0x0000000000000000
x7 = 0x000000016fd6dc9c
x8 = 0x0000000104810000 “lastPathComponent”
x9 = 0x0000000000000015
x10 = 0x0000000196cc7120 CoreFoundation__CFRuntimeObjCClassTable x11 = 0x000000230000003f x12 = 0x00000001482b4580 x13 = 0x000001a596cbaa49 x14 = 0x0000910a0cfb8b96 x15 = 0x00000000000000c8 x16 = 0x0000000195fea4d8 libobjc.A.dylib
object_getClass
x17 = 0x0000000184276534 CoreFoundation-[__NSCFBoolean retain] x18 = 0x0000000000000000 x19 = 0x00000001048a1000 x20 = 0x0000000196cbd300 _MergedGlobals + 16 x21 = 0x0000000000000003 x22 = 0x0000000000000001 x23 = 0x0000000000000001 x24 = 0x0000000000000000 x25 = 0x0000000196cbd2f0 _MergedGlobals x26 = 0x0000000196cbb790 (void *)0x000001a596cbb741 x27 = 0x0000000196cbd300 _MergedGlobals + 16 x28 = 0x00000001895c8496 "numberWithBool:" fp = 0x000000016fd6e830 lr = 0x00000001033d73f4 Aweme
___lldb_unnamed_symbol257590$$Aweme + 3232
sp = 0x000000016fd6e240
pc = 0x00000001033d7408 Aweme`___lldb_unnamed_symbol257590$$Aweme + 3252
cpsr = 0x60000000
对比发现 寄存器x0和x28的值并不相同。实在是不明白为什么会出现这种情况。