2011-12-07 40 views
4

我很確定我已經知道答案了,但我想我會問。 爲了確保我的變量是我希望他們在某個特定點上的位置,我需要創建日誌和斷點,我很煩躁。有沒有辦法在XCode 4中不使用斷點來觀察變量?

任何人都知道一種監視變量的方法,因爲它們在沒有斷點/日誌的情況下運行?

謝謝!

回答

6

如果你想確保你的變量必須在某個特定點的某種方式,這就是斷言(例如NSAssert())。

如果您只是想知道變量何時更改,請使用觀察點而不是斷點。 (單擊調試器中的變量並選擇「Watch」。)

如果您想要在特定點檢查某個變量,並且只有在「某些特定情況」時纔打斷,請使用條件斷點。右鍵單擊xcode中的斷點,然後選擇「編輯斷點」。您也可以使用此功能,以便每隔一段時間就打破一次(例如發生100次火災後)。

如果您只是想知道何時到達一行代碼,但並未停止,請在「編輯斷點」窗口中使用動作「聲音」,然後在「評估動作後自動繼續」。我在演奏工作中使用了很多。當我聽到它開始嗡嗡聲時,我知道我在代碼中找到了一個熱點。

你有沒有別的想法?

+0

不錯!我從來沒有注意到你可以用斷點完成所有這些。這將有助於!謝謝 – Louie

4

上搶納皮爾的很好的建議之後,您還可以編輯斷點來記錄你所關心的值,然後繼續,就像這樣:

Image showing a logging breakpoint.

正如你所看到的,我已經設置此斷點以記錄表達式[marker center]的值。 GDB經常需要幫助才能知道表達式的最終類型是什麼,這就是爲什麼我必須添加(CGPoint)強制轉換。這顯然比單擊左列來設置一個普通的舊斷點要多一點點工作,但是與在代碼中插入NSLog()語句相比,它的工作量可以減少,而且可以在調試會話的中間執行 - 無需重新編譯,甚至重新啓動應用程序。

相關問題