2012-11-02 91 views
1

我試圖追查一個錯誤,我有一個崩潰日誌,看起來像這樣:objc_msgSend 15墜毀

0 libobjc.A.dylib  objc_msgSend + 15 

1 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14 

2 CoreFoundation __CFRunLoopDoTimer + 272 

3 CoreFoundation __CFRunLoopRun + 1232 

4 CoreFoundation CFRunLoopRunSpecific + 356 

5 CoreFoundation CFRunLoopRunInMode + 104 

6 GraphicsServices GSEventRunModal + 74 

7 UIKit UIApplicationMain + 1120 

8 MyApp main.m line 21 

不幸的是,MyApp的線是任何線程中是提到我的應用程序的唯一的地方。

任何可能導致類似崩潰的指針?

謝謝!

+0

是什麼在xcode輸出窗口正在記錄? – jere

+0

您還應該繼續在您的代碼中放置NSLog,以查看您的代碼崩潰的位置。它甚至進入'applicationDidFinishLaunching'? NSLog在崩潰之前的最後一個地方在哪裏? – Ravi

+0

它從用戶設備發送的崩潰日誌,我不知道如何去複製它,因爲它們只是對系統代碼的修改! –

回答

0

像其他答案一樣,這是因爲一個殭屍對象。正在對實例已被釋放的對象進行調用。

嘗試使用殭屍工具並在計劃中啓用殭屍對象來查找崩潰。這應該可以幫助您指出哪個對象被釋放,哪個方法導致崩潰。大多數情況下,這發生在使用委託時。

這應該是有幫助的:https://developer.apple.com/library/ios/recipes/Instruments_help_articles/FindingMessagesSenttoDeallocatedObjects/FindingMessagesSenttoDeallocatedObjects.html

0

該應用正試圖調用一些不存在的東西。這個調用是從另一個runloop觸發的,通過一個定時器或類似的東西,但已經釋放。

所以你可能想檢查是否有定時器設置在定時器觸發前可能會消失的對象上。

+0

也許是一個計時器,因爲第二行讀取'__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ' – nielsbot