在读取lldb中的寄存器时,两个不同的地址如何指向同一个对象?

时间:2015-10-01 14:48:42

标签: xcode pointers lldb cpu-registers

我一直在尝试调试问题,并一直使用lldb来查看存储在寄存器中的值以提供帮助。

我有一个简单的问题:

(lldb) register read
General Purpose Registers:
       rbx = 0x0000618000a4fc60
       rbp = 0x00007fff5fbfc690
       rsp = 0x00007fff5fbfc670
       r12 = 0x0000000000000000
       r13 = 0x0000000101a53f00
       r14 = 0x00006000000c04d0
       r15 = 0x00007fff8468e0c0  libobjc.A.dylib`objc_msgSend
       rip = 0x00007fff81a8faa1  Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 66
13 registers were unavailable.

(lldb) po $r13
<NSClipView: 0x101a53f00>

(lldb) po $rbx
<NSClipView: 0x101a53f00>

为什么即使$r13$rbx的地址完全不同,当我po时,我最终会得到同一个对象?也就是说,$rbx处存储的地址只会打印$r13

处的值

我在想$rbx处的地址是指针的地址(因为它以0x00006xxxxx开头?),一旦解除引用,就指向位于$r13地址的对象

po只是聪明,并且识别地址是指针地址的时候,只是自动取消引用指针?

我还注意到我看到有3种主要类型的地址。

 - 0x00006xxxxxxx 
 - 0x00007fffxxxx 
 - 0x000000xxxxxx

我知道是什么 - 就像我注意到0x00006xxxxxxx地址似乎是我应用程序对象的指针?

但我真的不确定

0 个答案:

没有答案