Xcode 4 / gdb /如何简单地观察对象属性?

时间:2011-09-17 16:45:02

标签: xcode variables gdb watch

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

  

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

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

因此我有两个问题:

  1. 如何以图形方式观看没有gdb的此类属性(就像在Visual Studio中一样)?
  2. 如何对gdb执行相同的操作?
  3. 非常感谢, 弗朗兹


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

      

    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无法访问中心属性。但我怎么能运行代码???

1 个答案:

答案 0 :(得分:12)

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

(gdb) po [myObject someProperty]

再次与世界相处融洽。同时重读你的问题我发现你要求打印一个非对象,因此你必须给gdb一个你要打印的属性类型的提示:

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

等等。