2012-03-14 225 views
-1

最近我的iphone項目走到了盡頭,但在應用程序運行期間遭受了一些隨機崩潰,並且調用堆棧始終位於COCOA庫中,難以解決問題,不知道如何處理它,因爲有些案例我甚至懷疑是蘋果的缺陷?Iphone隨機崩潰問題

我的問題。

  1. 對於那些重現率很低的隨機崩潰問題,你們如何處理它?任何有助於提高可重現率的方法?

  2. 如何解決位於COCOA庫中的這些崩潰問題?如何找到更多線索?

任何想法或討論將不勝感激,在此先感謝。

+3

你的代碼是什麼樣的,你試過了什麼?當你的應用程序崩潰時,你也需要發佈你在Log中獲得的內容。 – 2012-03-14 07:25:32

+0

由於大部分時間內存問題都會發生應用程序崩潰不一致......請在儀器中分析您的代碼。 – Tirth 2012-03-14 07:52:36

回答

0

意味着COCOA代碼是錯誤的 - 很可能你向它提供了一些無效的數據(例如,它不應該在那裏)。如果它隨機發生,可能會出現一些多線程併發性,或者某些對象變得(自動)發佈得太早等等。您必須認真分析您的代碼,這些代碼可以在崩潰發生的COCOA類中運行,或者嘗試將內存管理調試由其他答覆者建議。

+0

如何讓這種隨機崩潰更容易重現?由於重現是開始修復的第一步,任何有這種經驗的人請分享,謝謝。 – jianhua 2012-04-17 06:17:12

+0

不幸的是,沒有通用的配方,基於你使用的API可以依賴於你可以想象的任何東西。尋找隨機崩潰的可重複性(以及因此!)往往更復雜,然後修復錯誤。一些可能導致隨機性的想法:同時發生的線程修改相同的對象,過早的對象自動釋放,事件提供者釋放(或未創建)的事件處理程序等等。 – MrTJ 2012-04-17 08:31:23

0

一般來說,我並不認爲這是COCOA的問題。它發生了,但大多數情況下,錯誤是我們的錯誤。

當這種崩潰發生時,首先要做的就是運行靜態分析器,有時候這只是一個保留/釋放問題。 如果您使用ARC,請跳過此部分並開始創建異常斷點(在鏈接指南中搜索'To add an exception breakpoint...')。異常斷點有助於在拋出異常時獲得更詳細的崩潰日誌。

第三步是使用儀器,尋找浪費記憶,泄漏和任何其他形式的內存泄漏。在一些WWDC視頻中深入解釋瞭如何使用樂器。

0

啓用NSZombie標誌。 項目(在Xcode的頂LeftCorner)>診斷>使殭屍對象

將LTE你知道在那裏我們的代碼崩潰..find如果可可代碼的應用程序崩潰,沒有它解決它

+0

是的,有助於解決某些指針發佈崩潰問題。 – jianhua 2012-04-17 06:17:47