2011-10-25 145 views
0

我有一個應用程序在設備上崩潰(在模擬器中運行良好),這導致我認爲這可能是內存問題...崩潰 - 從哪裏開始?

當它崩潰時,控制檯中沒有報告任何消息。

每次執行某個操作時它都不會崩潰,它會在應用程序運行並使用一段時間後始終在不同的時間點崩潰。

我知道我應該問一個更具體的問題 - 但是如果有人能夠告訴我從哪裏開始試圖追蹤不在控制檯中報告的崩潰,我會非常感激!

我現在使用最新版本的XCode(4.2)

感謝提前...

回答

2

它非常井可能是內存問題。如果這是您要開始診斷的位置,則可以使用內置的Xcode分析器。在Xcode產品 - >配置文件會讓你開始。

0

也許NSZombiesEnabled值設置爲YES 項目 - >編輯主動可執行文件 - >參數 - >變量還幫助;這會根據訪問發佈的對象向您顯示內存訪問錯誤。但在這種情況下,你至少應該得到一個SIG_ABRT或BAD_ACCESS錯誤...

您也可以登錄時,應用程序接收的didReceiveMemoryWarning內存警告視圖控制器功能 - 之前的系統是這個被稱爲內存不足時扔掉東西。這當然可能導致沒有任何顯示的崩潰。

0

首先,放鬆一下。

然後閱讀這個Technical Note。 現在,請按照下列步驟操作:

  1. /Users/<username>/Library/Developer/Xcode/DerivedData刪除所有文件夾。
  2. /Users/<username>/Library/Application Support/iPhone Simulator刪除所有文件夾。
  3. 清理垃圾。
  4. 從設備中刪除應用程序。
  5. 在設備上構建並運行應用程序。
  6. 按照導致崩潰的步驟操作。

現在,轉到XCode->Window->Organizer並從DEVICES窗格中選擇"Device Logs"您的設備。選擇最近的這些應用程序的名稱。等待XCode到symbolicate the crashlog。現在有兩種可能性:

  1. 它的低內存崩潰。
  2. 其內存管理相關崩潰。

如果它的選項之一,在您的儀器中描述您的應用程序。

如果它的選項二,你應該看到應用程序崩潰的堆棧幀(或你的模塊的堆棧)。 This SO question will be very helpful

如果你不能理解輸出(或者你認爲crashlog不是符號化的 - 或者它不是你的代碼崩潰),請將崩潰日誌的崩潰線程堆棧放在這裏,我會研究它。

PS:在第一部分中,我們執行前兩個步驟,以確保沒有剩餘的.app/.dSYM文件,因爲XCode symbolicator不是那麼聰明,所以可能會在後面的流程中阻礙符號化。