2011-09-17 107 views
4

我在Xcode 4中很迷茫。看一個簡單的變量是一場噩夢。我不知道如何「只看一個變量值」。它在Xcode 3是比較容易......Xcode 4/gdb /如何簡單地觀看對象屬性?

我有下面的代碼:

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(打印對象)打印變量/對象值。但現在,我無法顯示labelEastcenter屬性,因爲它是從母類繼承的。

(gdb)po labelEast.center
沒有成員名爲center。

我不明白爲什麼GDB說,這而代碼工作正常,並認爲物業。

因此,我有2個問題:

  1. 如何看不GDB這樣的屬性在以圖形方式(如簡單地在Visual Studio)?
  2. 如何用gdb做同樣的事情?

非常感謝, 弗朗茨


不幸的是,我嘗試過,但得到這個:

PO [labelSouth中心]

計劃接收信號EXC_BAD_ACCESS,無法訪問記憶。 原因:地址上的KERN_INVALID_ADDRESS:0x1a000356 0x343c7d06在 objc_msgSend_stret()正在調試的程序在 中從GDB調用的函數中發送信號。 GDB保留在收到信號 的幀中。要更改此行爲,請使用「set unwindonsignal on」 對包含函數(objc_msgSend) 的表達式的評估將被廢棄。

,當我嘗試:

(GDB)打印labelSouth.center
沒有成員命名爲中心。

我真的懷疑有沒有訪問UILabel中心物業。但我怎麼能運行代碼?

回答

12

我已經打了幾次自己的東西,只記得「哦,沒錯,gdb不支持點符號,所以我必須使用getter」。然後就這樣做:

(gdb) po [myObject someProperty] 

和一切都很好,再次與世界。此外重讀你的問題,我看到你的要求要打印非對象,所以你必須給GDB的要打印的是什麼類型的屬性提示:

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

等。

+0

行,我嘗試這樣做: – user255607

+0

(GDB)P(的CGRect)[labelSouth中心] $ 2 = { 原點= { X = 50, Y = 26 }, 大小= { 寬度= 1.23146109e -41, height = 3.88313817e-41 } } – user255607

+0

但是現在,我們怎麼能簡單地用Xcode 4來做到這一點呢?我在打開調試窗口方面取得了成功,但我無法看到UILabel的任何中心屬性... – user255607