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

use*_*607 4 variables xcode 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 !");
Run Code Online (Sandbox Code Playgroud)

设置断点后,我只是想看labelEast.center.x(labelEast是一个UILabel对象).由于我在Xcode 4菜单中找不到监视项目,因此我尝试使用gdb.我习惯用po(打印对象)打印变量/对象值.但是现在,我无法显示labelEast center属性,因为它是从母类继承的.

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

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

因此我有两个问题:

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

非常感谢,弗兰兹


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

po [labelSouth center]

程序收到信号EXC_BAD_ACCESS,无法访问内存.原因:地址为KERN_INVALID_ADDRESS:0x1a000356 objc_msgSend_stret()中的0x343c7d06正在调试的程序在从GDB调用的函数中发出信号.GDB保留在接收信号的帧中.要更改此行为,请使用"set unwindonsignal on"将放弃对包含函数(objc_msgSend)的表达式的求值.

当我尝试:

(gdb)print labelSouth.center
没有名为center的成员.

我真的怀疑没有进入中心的财产UILabel.但我怎么能运行代码???

Eim*_*tas 12

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

(gdb) po [myObject someProperty]
Run Code Online (Sandbox Code Playgroud)

一切都与世界相处得很好.同时重读你的问题我发现你要求打印一个非对象,因此你必须给gdb一个你要打印的属性类型的提示:

(gdb) p (CGRect)[myView frame]
(gdb) p (CGPoint)[myView center]
Run Code Online (Sandbox Code Playgroud)

等等.