lldb调试时得到一个结构体的地址如图所示
请问该如何打印出这个结构体的具体内容呢这不是结构体(struct)啊,应该是NSData,转成NSString。
额、这是个类,但是没法向gdb那样直接打印他的内容,可以通过各个类成员的get函数获取他们的值
p *(Type *)addr
po [addr _ivarDescription]
1 个赞
po [[NSString alloc] initWithData:$x0 encoding:1]
ivars $x0
你说的结构体,此处是ManualAuthAesReqData
,准确说是,iOS中ObjC的Class类的Instance实例。
想要查看Class(的Instance)的结构 = 有哪些属性 有哪些函数等等,可以用:
-
po [$x0 _shortMethodDescription]
- 可以输出:属性值+函数
或者用:
-
po [$x0 _ivarDescription]
- 只输出method函数,不输出属性
举例:
- _shortMethodDescription
(lldb) po [observerImp _shortMethodDescription]
<MLHAMDataLoadTaskObserverImpl: 0x2805ec190>:
in MLHAMDataLoadTaskObserverImpl:
Properties:
@property (readonly) unsigned long hash;
@property (readonly) Class superclass;
@property (readonly, copy) NSString* description;
@property (readonly, copy) NSString* debugDescription;
Instance Methods:
- (void) dataLoadTask:(id)arg1 didCompleteWithError:(id)arg2; (0x103a29678)
- (void) dataLoadTaskDidStart:(id)arg1; (0x103a29994)
- (id) init; (0x103a29c74)
- (void) .cxx_destruct; (0x1054dea04)
(NSObject ...)
- _ivarDescription
(lldb) po [observerImp _ivarDescription]
<MLHAMDataLoadTaskObserverImpl: 0x2805ec190>:
in MLHAMDataLoadTaskObserverImpl:
_networkRequestTracker (<YTNetworkRequestTracker>*): <YTNetworkRequestTrackerImpl: 0x2807527a0>
in NSObject:
isa (Class): MLHAMDataLoadTaskObserverImpl (isa, 0x21a10a6d7b5d)