4

我在 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.xlabelEast是一个UILabel对象)。由于我在 Xcode 4 菜单中找不到监视项目,因此我正在尝试使用 gdb。我习惯用po(打印对象)打印变量/对象值。但是现在,我无法显示labelEast center属性,因为它是从母类继承的。

(gdb) po labelEast.center
没有名为 center 的成员。

我不明白为什么 gdb 会这样说,而代码工作正常并且可以看到属性。

因此我有两个问题:

  1. 如何以图形方式(就像在 Visual Studio 中一样)在没有 gdb 的情况下观看这样的属性?
  2. 如何对 gdb 做同样的事情?

非常感谢,弗朗茨


不幸的是,我试过了,但得到了这个:

po [标签南中心]

程序收到信号 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. 但是我怎么能运行代码???

4

1 回答 1

12

我自己打了几次这个东西只是为了记住“哦,没错,gdb 不支持点表示法,所以我必须使用 getter”。然后做:

(gdb) po [myObject someProperty]

一切都好起来了。还重新阅读您的问题,我看到您正在请求打印一个非对象,因此您必须向 gdb 提示您要打印什么类型的属性:

(gdb) p (CGRect)[myView frame]
(gdb) p (CGPoint)[myView center]

等等。

于 2011-09-17T16:54:37.047 回答