举例
__DataStorage
具体详见:
对应调试细节:
ClassMetadata
(lldb) x/10xg 0x0000000207cb7d90
0x207cb7d90: 0x0000000207cb7d58 0x0000000207c47ed8
0x207cb7da0: 0x00000001c29c8490 0x0000805000000000
0x207cb7db0: 0x0000000281e95702 0x0000000000000002
0x207cb7dc0: 0x0000000700000041 0x00000010000000d0
0x207cb7dd0: 0x00000001b2009838 0x0000000000000000
(lldb) po 0x0000000207cb7d58
Foundation.__DataStorage
(lldb) po 0x0000000207c47ed8
_TtCs12_SwiftObject
(lldb) x/2xh 0x207cb7db8
0x207cb7db8: 0x0002 0x0000
(lldb) x/2xh 0x207cb7dc0
0x207cb7dc0: 0x0041 0x0000
(lldb) x/2xw 0x207cb7db8
0x207cb7db8: 0x00000002 0x00000000
(lldb) x/2xw 0x207cb7dc0
0x207cb7dc0: 0x00000041 0x00000007
(lldb) x/2xh 0x207cb7dc4
0x207cb7dc4: 0x0007 0x0000
(lldb) x/2xw 0x207cb7dc8
0x207cb7dc8: 0x000000d0 0x00000010
->
- __DataStorage的Class的TypeMetadata
- [+0x00] = var kind: Int
- 0x0000000207cb7d58
- Foundation.__DataStorage
- 0x0000000207cb7d58
- [+0x08] = var superClass: UnsafeMutablePointer
- 0x0000000207c47ed8
- _TtCs12_SwiftObject
- 0x0000000207c47ed8
- [+0x10] = Int cacheData[2]
- 0x00000001c29c8490
- 0x0000805000000000
- [+0x20] = var data: Int
- 0x0000000281e95702
- [+0x28] = var classFlags: Int32
- 0x00000002
- [+0x2C] = var instanceAddressPoint: UInt32
- 0x00000000
- [+0x30] = var instanceSize: UInt32
- 0x00000041
- [+0x34] = var instanceAlignmentMask: UInt16
- 0x0007
- [+0x36] = var reserved: UInt16
- 0x0000
- [+0x38] = var classSize: UInt32
- 0x000000d0
- [+0x3C] = var classAddressPoint: UInt32
- 0x00000010
- [+0x40] = var typeDescriptor: UnsafeMutablePointer
- 0x00000001b2009838
- [+0x48] = var iVarDestroyer: UnsafeMutablePointer
- 0x0000000000000000
- [+0x00] = var kind: Int
以及:
struct TargetClassDescriptor
(lldb) x/8xg 0x00000001b2009838
0x1b2009838: 0xffffbc3480000050 0xfff49e10ffffffe8
0x1b2009848: 0x0000000000010464 0x0000001800000002
0x1b2009858: 0x000000060000000e 0x000000100000000a
0x1b2009868: 0x0000000100000008 0x00000001fff33690
(lldb) x/16xw 0x00000001b2009838
0x1b2009838: 0x80000050 0xffffbc34 0xffffffe8 0xfff49e10
0x1b2009848: 0x00010464 0x00000000 0x00000002 0x00000018
0x1b2009858: 0x0000000e 0x00000006 0x0000000a 0x00000010
0x1b2009868: 0x00000008 0x00000001 0xfff33690 0x00000001
->
- Foundation.__DataStorage TypeDescriptor == struct TargetClassDescriptor
- [+0x00] = var flags: UInt32
- 0x80000050
- [+0x04] = var parent: TargetRelativeDirectPointer
- 0xffffbc34
- [+0x08] = var name: TargetRelativeDirectPointer
- 0xffffffe8
- [+0x0C] = var accessFunctionPointer: TargetRelativeDirectPointer
- 0xfff49e10
- [+0x10] = var fieldDescriptor: TargetRelativeDirectPointer
- 0x00010464
- [+0x14] = var superClassType: TargetRelativeDirectPointer
- 0x00000000
- [+0x18] = Int32 Union
- var ResilientMetadataBounds: RelativeDirectPointer
- var metadataNegativeSizeInWords: UInt32
- 估计是:0x00000002
- var ResilientMetadataBounds: RelativeDirectPointer
- [+0x1C] = Int32 Union
- var extraClassFlags: ExtraClassDescriptorFlags
- var metadataPositiveSizeInWords: UInt32
- 暂不确定是哪个
- 此处值:0x00000018
- [+0x20] = var numImmediateMembers: UInt32
- 0x0000000e
- [+0x24] = var numFields: UInt32
- 0x00000006
- [+0x28] = var fieldOffsetVectorOffset: UInt32
- 0x0000000a
- [+0x2C] = var Offset: UInt32
- 0x00000010
- [+0x30] = var size: UInt32
- 0x00000008
- [+0x34] = var firstVtableData: VTableBuffer
- 0x00000001
- [+0x00] = var flags: UInt32