如何查看传入参数,使用lldb,如下面这个类函数

NSDictionary *dict = [NSDictionary dictionaryWithObjects:<#(const __unsafe_unretained id *)#> forKeys:<#(const __unsafe_unretained id *)#> count:<#(NSUInteger)#>];

-> 0x11dcd1d4 <+1108>: blx r12 0x11dcd1d6 <+1110>: mov r7, r7 0x11dcd1d8 <+1112>: blx 0x11f1ec30 ; symbol stub for: objc_retainAutoreleasedReturnValue 0x11dcd1dc <+1116>: movw r1, #0x40d8 (lldb) po $r0 NSDictionary

(lldb) po $r2
668433340 <------这个怎么知道objects是啥??用p及p (char*)都不好用。

(lldb) po $r3
668433332 <-----这个怎么知道keys传入的是啥??

(lldb) x/10 $sp
0x27d77ae4: 0x00000002 0x00000001 0x000018d0 0x1c27e375
0x27d77af4: 0x1658f340 0x27d77b80 0x00000008 0x3a4b3621
0x27d77b04: 0x00000002 0x16676b20

这个明显能看出来count是2

你断下来的这个地方貌似不是一个objc_msgSend啊,那么R2和R3的值就不是函数参数了

那一般情况怎么处理,书的第二版我看到实战章节了,印象中书中没有提到这方面的吧,我现在的理解一直是书中提到的那个金句。先谢谢了。

所有LLDB的例子里,基本都出现了断在objc_msgSend的场景,你随便找一个仔细看看就知道了

那这个怎么理解呢?

blx r12

执行了r12处的内容?的对应的函数或者,无解了吗?

当断点执行到blx r12之后,你si一下,就进入到这个函数的内部了,你就知道是什么函数了

Okay, 明白了,谢谢大神不厌其烦 :grin: