我正在尝试通过一些时髦的UIView行为进行调试,并且我一直在遇到LLDB绝对无用和误导的情况.让我告诉你我的意思:
NSLog(@"myView: %@", myView);
2012-04-20 15:24:57.070 myProj[35789:f803] myView: <MyView: 0x7cc7500; frame = (0 119; 768 885); layer = <CALayer: 0x7cc8030>>
Run Code Online (Sandbox Code Playgroud)
但是当我在那个确切时刻设置断点并尝试使用调试器时,它返回nil:
(lldb) po myView
(MyView *) $552 = 0x00000000 <nil>
Run Code Online (Sandbox Code Playgroud)
我会尝试转移到GCC 4.2以查看它是否有帮助,但在LLVM GCC 4.2下编译不是一个选项,因为这是一个ARC项目.
当然,如果我已经知道要查询的正确地址,LLDB将会起作用.但是,对于某些对象,符号名称和地址之间的链接似乎已被破坏,尽管它适用于大多数其他对象.
(lldb) po self
(MyViewController *const) $51 = 0x07e92200 <MyViewController: 0x7e92200>
(lldb) po myView
(MyView *) $25 = 0x00000000 <nil>
2012-04-20 15:44:17.250 myProject[37551:f803] myView: <MyView: 0x7e8e240; frame = (0 119; 768 885); layer = <CALayer: 0x7ea2330>>
(lldb) po 0x7e8e240
(int) $50 = 132702784 <MyView: 0x7e8e240; frame …Run Code Online (Sandbox Code Playgroud)