、LLDB查看寄存器内容:
register read,然后就会打印出如下类似内容。
(lldb) register read
General Purpose Registers:
rax = 0x000000010113e160
rbx = 0x0000000000000000
rcx = 0x001d8001000024fe
rdx = 0x0000000000000000
rdi = 0x000000010113e160
rsi = 0x000000010113e160
rbp = 0x00007ffeefbff5c0
rsp = 0x00007ffeefbff5a0
r8 = 0x001d800100002429
r9 = 0x0000000101100000
r10 = 0x0000000000000002
r11 = 0x00000001003ced50 libobjc.A.dylib`::-[NSObject init]() at NSObject.mm:2308
r12 = 0x0000000000000000
r13 = 0x0000000000000000
r14 = 0x0000000000000000
r15 = 0x0000000000000000
rip = 0x00000001000017ad LGTest`main + 77 at main.m:25
rflags = 0x0000000000000206
cs = 0x000000000000002b
fs = 0x0000000000000000
gs = 0x0000000000000000
(lldb)
、instrumentObjcMessageSends打印系统底层方法的调用信息。
instrumentObjcMessageSends(true);
[student saySomething];
instrumentObjcMessageSends(false);
我们像上面的代码一样来使用instrumentObjcMessageSends
方法,这样系统就会打印出instrumentObjcMessageSends
方法底层的调用信息。这些信息可以在我们电脑的/tmp目录中找到对应的文件。
因为instrumentObjcMessageSends
是C语言函数,如果要在外部使用,需要在我们使用的地方加上下面这句代码
extern void instrumentObjcMessageSends(BOOL flag);
然后就可以像下面这样快乐的使用了
extern void instrumentObjcMessageSends(BOOL flag);
int main(int argc, const char * argv[]) {
@autoreleasepool {
LGStudent *student = [LGStudent alloc] ;
instrumentObjcMessageSends(true);
[student saySomething];
instrumentObjcMessageSends(false);
}
return 0;
}
找到/tmp目录下对应的日志文件,内容如下
image.png
网友评论