2011-11-09 155 views
3

我有我的設備插入,我通過XCode運行我的應用程序。 在某個時候,應用程序在設備上崩潰並退出到主屏幕。但是,Xcode仍然顯示應用程序爲「正在運行」,我可以選擇單擊「停止」 - 它不會變灰。沒有錯誤消息打印到控制檯,並沒有崩潰日誌保存到設備日誌。設備上的應用程序崩潰,但XCode沒有註冊崩潰

我需要修復崩潰,但沒有錯誤消息我很難跟蹤這個問題。我已經在代碼的關鍵部分放置了NSLog聲明,但沒有更接近找出導致崩潰的原因。

是否有人知道XCode不知道我的應用程序崩潰並仍將應用程序顯示爲「Running」的奇怪事實?

回答

2

如果應用程序簽名分發,X代碼無法調試它。將應用程序啓動到設備上會導致X代碼無法獲取進程ID。

您仍然可以通過管理器 - >設備 - >控制檯獲取日誌消息(以及其他控制檯消息,希望包括崩潰信息)。

如果您的應用程序已針對開發進行簽名並且仍然存在問題,那麼您會遇到更深層的問題,導致X-Code認爲您的應用程序無法啓動。看看你的應用程序初始化需要多長時間;我遇到了加載時間超過10秒的問題X-Code沒有得到進程ID,但應用程序仍在運行。

更糟糕的情況下,加載NSLog的消息像瘋了一樣,安裝應用程序並運行它直到它崩潰。然後立即裝載組織者,進入設備並下載控制檯,然後查找任何崩潰日誌。

祝你好運!

+0

謝謝,解決了我的問題 – SamChen

3

爲了幫助你的問題的調試部分,您可以在您的構建設置中設置「地帶調試符號」爲「無」:

ss

,然後你就可以看到一個symbolicated崩潰日誌管理器窗口中的「設備日誌」一節中:

ss2

+0

謝謝 - 我將值設置爲否,但我沒有收到XCode無法識別崩潰的崩潰日誌。 – RanLearns

0

我有同樣的問題,應用程序崩潰,沒有任何日誌或error.My錯誤是有關「objc_msgSend」。

找出您的錯誤 - 從Xcode Navigator窗口(左側窗口)中選擇「顯示調試導航器」。我的應用在第一行的線程1中顯示「objc_msgSend」。

所以我有谷歌關於「objc_msgSend」,並發現這個崩潰發生的原因是內存錯誤。這意味着一條消息已經發送到一個已經被解除分配的接收者。

要跟蹤這個錯誤使用 「NSZombieEnabled環境變量」

  1. 從Xcode中,點擊產品 - >計劃 - >編輯方案。
  2. 從「運行方案」配置中,轉到「診斷」選項卡。
  3. 在「內存管理」下勾選「啓用殭屍對象」旁邊的複選框。

現在,運行您的應用程序並重新生成崩潰,這次您將在控制檯上找到崩潰報告。

*** -[WSAddressViewController respondsToSelector:]: message sent to deallocated instance 0x1683d1b0 
0

您是否意外設置了斷點?

Screenshot of breakpoint

禁用或刪除斷點。

相關問題