2009-08-15 30 views
3

我的應用程序在啓動時發生隨機崩潰。我在iPhone應用程序中收到錯誤0x8badf00d,並且不是通常的嫌疑人

我很確定是不是啓動時間(如What does 8badf00d mean?中所述),因爲應用程序啓動速度很快。

最糟糕的是,崩潰日誌不能是simbolicate(我無法獲得源代碼行號)。這是錯誤:

Exception Type: 00000020 
Exception Codes: 0x8badf00d 
Highlighted Thread: 0 

Application Specific Information: 
Failed to launch 
Thread 0: 
0 JhonSell      0x000c63d6 0x1000 + 807894 
1 JhonSell      0x000c7ffe 0x1000 + 815102 
2 JhonSell      0x000c9646 0x1000 + 820806 
3 JhonSell      0x000ca50a 0x1000 + 824586 
4 JhonSell      0x000b3b72 0x1000 + 732018 
5 JhonSell      0x000b3e1e 0x1000 + 732702 
6 JhonSell      0x000b3fd4 0x1000 + 733140 
7 JhonSell      0x0000a312 0x1000 + 37650 
8 JhonSell      0x0000aa7c 0x1000 + 39548 
9 JhonSell      0x00006e7c 0x1000 + 24188 
10 JhonSell      0x0000fede 0x1000 + 61150 
11 JhonSell      0x00004080 0x1000 + 12416 
12 UIKit       0x30a4ef24 -[UIApplication performInitializationWithURL:asPanel:] + 160 
13 UIKit       0x30a57dec -[UIApplication _runWithURL:] + 644 
14 Foundation      0x306945a2 __NSFireDelayedPerform + 326 
15 CoreFoundation     0x30269d88 CFRunLoopRunSpecific + 2642 
16 CoreFoundation     0x30269320 CFRunLoopRunInMode + 44 
17 GraphicsServices    0x31567e58 GSEventRunModal + 268 
18 UIKit       0x30a4fa6c -[UIApplication _run] + 520 
19 UIKit       0x30a591d0 UIApplicationMain + 1132 
20 JhonSell      0x00002290 0x1000 + 4752 
21 JhonSell      0x0000202c 0x1000 + 4140 

我不能對它進行調試(我儘量附上但是,應用程式由看門狗打死,我認爲)。

回答

10

您的UIApplicationDelegate實現中有三種方法必須在5-6秒內完成,否則iPhone將終止您的應用程序(這不適用於當您使用調試器附加在模擬器上時)。我不確定是否確切的時間間隔記錄在任何地方,但這是我通過實驗確定的。啓動時有兩個,applicationDidFinishLaunching:和application:didFinishLaunchingWithOptions,另一個關閉,applicationWillTerminate。

你會想看看,在這些方法中的任何網絡訪問或耗時的操作都是異步執行的,因此,該方法可以快速返回。

這是我知道的,唯一的事情會導致啓動時的看門狗崩潰。

至於堆棧跟蹤更多的提示,如果您使用OS 3.0和3.0 SDK,主辦方之前應該做到這一點。只要確保您將dSYM文件從硬盤驅動器上的-exact-build文件保留在某處即可。然後,當您在XCode的Organizer下查看@時,它應該自動爲您添加符號。

0

在我看來,你「吃了變質的食物」(明白了嗎?8壞f00d?)

不管怎樣,我的理解,這意味着你使用的應用程序中的未初始化的指針,從外觀上來看它在初始化它。

(或在任何情況下,這就是它似乎在註釋的傢伙說here

+0

的http:// en.wikipedia.org/wiki/Hexspeak – slf 2009-09-22 15:38:56

+1

我的最愛是0xDEFEC8ED – slf 2009-09-22 15:39:30

+1

這不是發生在這種情況下。 http://developer.apple.com/iphone/library/technotes/tn2008/tn2151.html – commanda 2010-07-30 01:11:43

3

蘋果iPhone crash reporting文件表明,這是錯誤代碼表示看門狗超時:

Watchdog timeout: distinguished by exception code 0x8badf00d, timeouts occur when an application takes too long to launch or terminate.

看到的崩潰報告也說明了同樣的事情;這似乎很可能就是這樣發生的事情。也許這不是應用程序啓動;但終止 - iPhone操作系統希望能夠非常快速地終止應用程序(例如,當收到來電時退回到操作系統) - 也許您的應用程序需要很長時間才能關閉?

關於您在回溯中缺少符號 - 您是否看過Symbolicate實用程序?

6

8BADF00D Used by Apple as the exception code in iPhone crash reports when an application has taken too long to launch or terminate.

又見

DEADFA11 Used by Apple as the exception code in iPhone crash reports when the user has force-quit the application

相關問題