2010-07-09 156 views
0

最近安裝了4.0 SDK後,我重新編譯了一個客戶端項目,以測試它在新操作系統下的運行方式。 (之前使用3.1.3進行的測試沒有崩潰,只有一個內存泄露,正式向Apple報告,他們無法在4.0 beta 3上重現,因此已關閉。)運行泄漏時發生崩潰

一切進行得非常順利(測試期間沒有崩潰)直到我決定運行它與泄漏,這導致我的應用程序崩潰,每次運行它。

所有的崩潰日誌是這樣的:

 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x00002866 objc_msgSend + 10 
1 MyApp       0x000040b0 0x1000 + 12464 
2 MyApp       0x000040b0 0x1000 + 12464 
3 MyApp       0x000040b0 0x1000 + 12464 
... 
511 MyApp       0x000040b0 0x1000 + 12464 

我也有泄露所有的地方,但負責任的圖書館永遠是蘋果的一個,和我的應用程序不會出現在堆棧跟蹤。至少對於有堆棧軌跡的泄漏......其中有些是普通塊漏洞,根本沒有堆棧軌跡。

任何想法?

更新:以上適用於我的iPhone 3GS運行iOS 4。當我在運行了3.1.3在我的iPod Touch的第一代構建,我甚至不能啓動泄漏,別提得到它的崩潰......但我可以在該舊設備上進行構建和調試。

(我設置我的基地SDK 4.0和部署目標3.1.2)

+0

我也有過與試驗一些問題上的4.0,我用的,而我是構建測試項目沒有加載的類別。奇。 – 2010-07-09 08:25:48

+0

構建已提交給Apple,並於昨天獲得批准。現在我要去泄漏確實給誤報的假設下進行工作(當它不是忙崩潰了!) – 2010-07-28 23:07:06

回答

0

它看起來像你有一個方法遞歸調用本身導致堆棧溢出。

嘗試編譯您的應用程序與調試符號啓用,所以該方法將顯示(希望)。

+0

這是一個調試版本。另外,我可以就好了,沒有任何崩潰,當我構建和調試通過的Xcode正確運行此版本。當我嘗試使用Leaks工具時,只會發生這種崩潰。 – 2010-07-09 18:26:25

0

克勞斯布洛克是正確的,這是由遞歸引起的。如果這是一個調試版本,它可能是調試器本身導致的問題。

對於升級到Xcode 3.2.3的人來說,關於調試器問題的討論比平常多。我對調試器隨意掛在與特定代碼無關的明顯失控遞歸方面存在問題。我只通過完全刪除我的/Developer目錄並重新安裝4.0SDK來解決此問題。

我通常不喜歡責怪的工具,但在這種情況下,它可能是必要的。