2010-07-12 42 views
11

我正在調試一個iPhone應用程序我在Xcode中編寫,但有時現在調試器(這是GDB)減慢了很多(做一步一步的調試),併成爲有時無響應(踏入,踩踏,踩踏的圖標不可點擊),有時會恢復正常並繼續,有時候會一直保持,直到永久或消息出現在控制檯中:「超時」 (或類似的東西),我可以看到我的CPU從活動監視器上升到90%。作爲一種解決方法,我曾經在我感興趣的代碼行之後放置了一個brekpoint,並簡單地使用'Continue'繼續'Continue'(這樣做使其運行得非常好,而且速度很快)。 這可以代碼依賴?有沒有一種方法可以調試調試器(行爲)?Xcode調試與iPhone應用程序是緩慢和laggy

UPDATE: 完整的消息是

Timed out fetching data. Variable display may be inaccurate. 

Google上搜尋它,我發現它時,Xcode的GDB試圖尋找數據格式化內發生。有人建議禁用運行>變量視圖>使用數據格式化器(在xcode 3.2中,之前我想它是調試 - >變量 查看 - >啓用數據格式化器),它似乎也適用於我(至今) 因此,現在我我問:爲什麼? :d

UPDATE2: 這解決調試器從停止在代碼的特定部分,但它在STIL另一個呼叫掛起(具有相同的消息)。在我看來,這涉及到一些CoreData API像(NSEntityDescription*)entityForName: inManagedObjectContext:

UPDATE3: 難道是最好的緩存NSEntityDescription而不是創建總是一個新的?

+0

這是否發生在您的代碼中的所有地方?你能檢查這些代碼是否消耗大量計算?我以前從來沒有遭受過。您的硬件細節,您當前的Mac OS以及您當前的XCode如何? – vodkhang 2010-07-12 06:35:57

+0

我在帶有Mac OS X SL 10.6.4的2009 iMac上運行帶有iPhone SDK 4的Xcode 3.2.2。現在我將對其他代碼片段進行一些測試,但在具體的片斷上,它的行爲並不總是如此。 – rano 2010-07-12 06:45:07

+0

以下是特定的消息:「超時提取數據,變量顯示可能不準確。」 – rano 2010-07-12 06:52:56

回答

0

嘗試在樂器中運行您的代碼。這可能是一個內存問題,所以請在代碼運行時留意儀器中的使用情況。當你到達響應變得越來越少的部分時,你應該看到內存使用量增加並且能夠從儀器中追溯。

希望這會有所幫助!

+0

儀器內部似乎很正常。正如帖子中所說,我已經注意到,Core Data API會發生這種情況。 – rano 2010-07-12 18:38:14

0

我有同樣的問題,我解決了它禁用選項「運行」 - 在的Xcode啓用/禁用保護的Alloc」。現在它運行得非常快!檢查是否啓用了此選項並將其禁用。

希望它有幫助! :D

+0

謝謝,但** Guard Malloc **一直在我的項目中被禁用。另外,它產生的緩慢是'正確的',並且與我所遇到的不同(我的調試器完全掛起) – rano 2010-10-15 11:14:06

0

我在遷移到xCode 3.2後也遇到了同樣的問題。我一直在使用xcode 3.0和2.0,我從來沒有在這些SDK中遇到過這個問題。所以我認爲這是新SDK的一個問題。

0

你寫了很多東西到控制檯?根據我的經驗,它嚴重拖慢了一切。

+0

ehm不是這種情況,如果你仔細閱讀 – rano 2010-11-10 17:45:38

+1

這個問題但我會給那些提示誰*正在向控制檯寫信息:在控制檯中激活搜索功能會減慢速度。只要你不使用它,關閉搜索行。 (當程序主動寫入控制檯時,儘量不要打開搜索欄 - 它會嚴重陷入困境。) – 2012-08-29 11:54:07

0

我對Xcode的調試很新,但是在做我的研究時,我偶然發現了this question這可能對您的問題有所幫助。

基本上有兩個人在那裏有很多問題與Xcode調試和OP解決了他的問題,通過乾淨的安裝。引用LucasTizma的第4次編輯:

最終得到設備調試工作。 我有一種感覺, 低級別在我的設備上造成 問題......我沒有在我的 系統上工作過。但是,我在 上安裝了另一個系統和設備調試 相同的設備(使用相同的電纜) 完美工作。 的是,設備調試開始了我原來的機器上工作 ,導致我 後直接認爲,一些奇怪的硬件 國旗被搞砸了,不知何故 第二臺機器上的「復位」。在任何 的情況下,它現在的作品。

+0

這不是關於設備調試,而是仿真器調試。另外,它有一些或多或少嚴格的條件下發生的問題 – rano 2010-11-10 20:13:33

+0

@rano我同意... Neverthless它暗示我Xcode有一些奇怪的錯誤,或者只是不那麼簡單,因爲它是廣告,這導致人們認爲它是越野車,並「修復」它修復它。我想我的想法是讓你嘗試一下,至少在不同的,乾淨的機器上配置所有這些,看看你的問題是否存在。 – cregox 2010-11-11 17:48:38

+0

@Cawas我已經嘗試清理和安裝,即使不在新機器上,因爲我只有這個:D – rano 2010-11-12 16:54:54

1

我有同樣的問題,結果發現蘋果的討論中,一些相關的答案:問題

一個常見原因是試圖運行未初始化的對象對數據格式。我們實際上沒有辦法確定對象是否合適。我們有一些啓發式方法,但是堆棧對象有時會指向另一個堆棧對象的剩菜,它們「幾乎足夠好」並且欺騙了我們。有一個竅門可以解決這個問題,那就是當你打破一個函數時,在對象被初始化之後中斷,而不是函數的開始。

+1

聽起來有趣,你可以鏈接你的來源? – rano 2010-11-17 15:52:08

1

所以沒有人有這個答案?在一個簡短的測試中,關閉格式可能會有幫助(但是症狀非常隨機,很難說明確)。調試器幾乎沒有格式化。

0

當在方案中啓用「隊列調試」時,我觀察到非常慢的調試。如果您不需要隊列調試,請考慮禁用它。

相關問題