2013-04-12 111 views
4

我試圖弄清楚爲什麼我正在開發的應用程序在我的設備(運行iOS 6.1的iPhone 4)上運行時立即開始崩潰。我一直在研究這個應用程序大約8周,這個問題似乎突然出現了。應用程序在啓動時立即崩潰,僅在設備上

當我在模擬器上運行它時,該應用運行良好。當我嘗試我的設備崩潰上運行它,並在休息:

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

崩潰的AppDelegate的方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

被調用之前發生。

我看過設備崩潰日誌,我沒有看到任何讓我知道發生了什麼的線索。有沒有人知道我可以從哪裏尋找解決方案?對於它的價值,這裏是崩潰日誌:

異常類型:EXC_CRASH(SIGABRT)異常代碼: 0x0000000000000000,0x0000000000000000墜毀主題:0

主題0名:調度隊列:com.apple。主線程線程0 毀損:0 libsystem_kernel.dylib 0x39e74350 __pthread_kill + 8 1個libsystem_c.dylib 0x39deb11e pthread_kill + 54 2 libsystem_c.dylib 0x39e2796e中止+ 90 3
GraphicsServices 0x357da9ce GSRegisterPurpleNamedPort + 210 4 GraphicsServices 0x357da684 _GSEventInitialize + 92 5的UIKit 0x33b2d0c8 UIApplicationMain + 552 6 CK-排序器0x000bbaf4主(的main.m:16)7
CK-排序器0x000bba7c啓動+ 36

線程1:0 libsystem_kernel.dylib 0x39e74d98 __workq_kernreturn + 8 1 libsystem_c名爲.dylib 0x39dc2cf6 _pthread_workq_return + 14 2 libsystem_c.dylib 0x39dc2a12 _pthread_wqthread + 362 3 libsystem_c.dylib
0x39dc28a0 start_wqthread + 4

線程2名:調度隊列:com.apple.libdispatch管理器線程 2:0 libsystem_kernel.dylib 0x39e64648 kevent64 + 24 1
libdispatch.dylib 0x39d9d4ec _dispatch_mgr_invoke + 792 2 libdispatch.dylib 0x39d8fdf4 _dispatch_mgr_thread $ $ VARIANT高達+ 32

線程3:0 libsystem_kernel.dylib 0x39e74d98 __workq_kernreturn + 8 1 libsystem_c.dylib 0x39dc2cf6 _pthread_workq_return + 14 2 libsystem_c。 dylib 0x39dc2a12 _pthread_wqthread + 362 3 libsystem_c.dylib
0x39dc28a0 start_wqthread + 4

線程4名:WebThread線程4:0 libsystem_kernel.dylib
0x39e63eb4 mach_msg_trap + 20 1 libsystem_kernel。dylib
0x39e64048 mach_msg + 36 2的CoreFoundation
0x31ca6040 __CFRunLoopServiceMachPort + 124 3的CoreFoundation
0x31ca4d9e __CFRunLoopRun + 878 4的CoreFoundation
0x31c17eb8 CFRunLoopRunSpecific + 352 5的CoreFoundation
0x31c17d44 CFRunLoopRunInMode + 100 6的WebCore
0x37c16500 RunWebThread(無效*)+ 440 7 libsystem_c.dylib
0x39dcd30e _pthread_start + 306 8 libsystem_c.dylib
0x39dcd1d4 thread_start + 4

線程0墜毀與ARM線程狀態(32位): R0:00000000 R1:00000000 R2:00000000 R3:0x3b92d534 R4:0x00000006 R5:0x3b92db88 R6:0x3b933ff4 R7:0x2fd46c48 R8:0x1ed7a570 R9:0x001844f0 R10:00000000 R11:00000000 IP:0x00000148 SP:0x2fd46c3c LR:0x39deb123 PC:0x39e74350 CPSR:0x00000010

我運行的Xcode 4.6.1與ARC啓用。

+1

必須嘗試從設備中刪除應用程序? – Undo

+0

是的,對不起,我忘了提及,我嘗試從設備上刪除應用程序,做一個乾淨的,重新啓動Xcode,並重新啓動我的電腦。 – Darren

+0

你修改了'main'方法嗎?你有任何可能在初始化過程中運行的代碼嗎?例如'+ load',C++構造函數 –

回答

1

事實證明,我的設備出現問題。我重置了我的設備,並且崩潰消失了。將來我會記得在遇到這個崩潰時嘗試重置我的設備。

4

你需要提供更多的代碼或告訴你的應用程序在啓動時做了些什麼。

但是從崩潰日誌中可以明顯看出Thread0那個主UI線程已經死亡。這可能是因爲在設備上有一個名爲watchdog的進程,它會殺死任何看起來可疑的進程。就像佔用太多內存或花費太多時間在應用啓動時顯示第一個屏幕&「Apple」認爲會影響用戶體驗的其他事情。所以...

+0

由於模擬器上的超時時間遠遠長於設備,看門狗定時器似乎很有可能... – lnafziger

+0

是的我熟悉看門狗,但是在調用didFinishLoading方法之前,我的應用程序已經死亡。我可以發佈什麼代碼?在達到這一點之前,我的應用實際上正在做什麼?我無法找到正在調用的代碼的任何部分。此外,我沒有看到0x8BADF00D錯誤代碼。此外,應用程序在幾秒內崩潰得非常快。 – Darren

+0

如果你的代碼在啓動時處於'main'中,它看起來好像還沒有開始執行你的代碼。在那之前出了點問題。我想知道你在應用程序啓動時做了什麼。 ESP。你可能已經實現了將''ViewController'插入到'AppDelegate'中。 –