我在Xcode 4中迷失了。看一个简单的变量是一场噩梦。我不知道如何“观察变量值”。在Xcode 3中它更容易......
我有以下代码:
if (labelEast.center.x > (east_oldPosition.x + 50) )
NSLog(@"Time to switch to previous exercise !");
else if (labelEast.center.x < (east_oldPosition.x - 50) )
NSLog(@"Time to switch to next exercise !");
设置断点后,我只是想看labelEast.center.x
(labelEast
是UILabel
对象)。由于我在Xcode 4菜单中找不到监视项目,因此我尝试使用gdb。我习惯用po
(打印对象)打印变量/对象值。但现在,我无法显示labelEast
center
属性,因为它是从母类继承的。
(gdb)po labelEast.center
没有名为center的成员。
我不明白为什么gdb说这个,而代码工作正常并且看到了属性。
因此我有两个问题:
非常感谢, 弗朗兹
不幸的是,我尝试了但是得到了这个:
po [labelSouth center]
程序收到信号EXC_BAD_ACCESS,无法访问内存。 原因:地址为KERN_INVALID_ADDRESS:0x1a000356 0x343c7d06 in objc_msgSend_stret()正在调试的程序在输入时发出信号 从GDB调用的函数。 GDB保留在信号的帧中 收到了。要更改此行为,请使用“set unwindonsignal on” 评估包含函数的表达式(objc_msgSend) 将被遗弃。
当我尝试时:
(gdb)print labelSouth.center
没有名为center的成员。
我真的怀疑UILabel
无法访问中心属性。但我怎么能运行代码???
答案 0 :(得分:12)
我自己几次打这个东西只是为了记住“哦,没错,gdb不支持点符号所以我必须使用getter”。然后就做:
(gdb) po [myObject someProperty]
再次与世界相处融洽。同时重读你的问题我发现你要求打印一个非对象,因此你必须给gdb一个你要打印的属性类型的提示:
(gdb) p (CGRect)[myView frame]
(gdb) p (CGPoint)[myView center]
等等。