2012-04-01 64 views
2

我的应用程序在模拟器中工作得很好,但在设备上崩溃。我如何知道是什么让设备崩溃?应用程序在设备上启动时崩溃,但在模拟器上没问题

崩溃日志:

OS Version:  iPhone OS 5.1 (9B176) 
Report Version: 104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x373a332c __pthread_kill + 8 
1 libsystem_c.dylib    0x339b8208 pthread_kill + 48 
2 libsystem_c.dylib    0x339b1298 abort + 88 
3 GraphicsServices    0x30bfd87c GSRegisterPurpleNamedPort + 188 
4 GraphicsServices    0x30bfe2bc GSEventInitialize + 64 
5 UIKit       0x36e6cc5a UIApplicationMain + 534 
6 AppleIns HD      0x00078bd6 0x77000 + 7126 
7 AppleIns HD      0x00078b80 0x77000 + 7040 
+1

您是否能够在代码崩溃的地方找到确切的代码行(例如brakpoints)? – 2012-04-01 10:19:31

+0

您是否尝试重新启动设备?退房:http://stackoverflow.com/questions/3589631/gsregisterpurplenamedport-sigabrt-in-uiapplicationmain-before-app-delegate-gets – Stavash 2012-04-01 10:20:55

+0

你在使用Xcode在设备上进行调试吗?如果是的话,它应该指出你崩溃的地方...... – Saphrosit 2012-04-01 10:26:37

回答

0

尝试从设备上删除应用程序。此外,我们在谈论什么设备(iPhone 3GS,4,4s,iPad,iTouch(代?)等)

这里是我会检查,如果删除应用程序没有解决任何问题(假设你正在运行通过Xcode的设备上的应用程序):

  1. 把一个NSLog的声明在AppDelegate中的applicationDidFinishLaunchingWithOptions方法至少会告诉你是否跳板成功推出了应用
  2. 确保您还没有设置。任何仅针对视网膜显示设计的图形文件(闪屏图像,故事板,笔尖文件,UI元素等),或者不是为您正在运行的设备设计的。
    1. 如果该NSLog语句执行,然后开始在applicationDidFinishLaunchingWithOptions中开始放置任何你正在做的事情的断点,然后遍历代码,直到应用程序崩溃。这应该为您提供需要集中解决问题的地方。您也可以使用NSLog语句代替断点。之前您的应用程序已经启动,即
+0

NSLog在applicationDidFinishLaunchingWithOptions中不起作用。 – 2012-04-01 12:22:30

+0

crash in line:return UIApplicationMain(argc,argv,nil,NSStringFromClass([AIAppDelegate class])); – 2012-04-01 12:26:44

+0

NSLog在applicationDidFinishLaunchingWithOptions中工作。它必须在返回声明之前。放置它的最佳位置在该方法的顶部。 – 2012-04-01 13:26:56

0

你在模拟器和设备相同的目标运行?如果是的话,就请尝试以下开始调试:

@try { 
    retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([YOUR-AppDelegate-HERE class])); 
} 
@catch (NSException *exception) { 
    NSLog(@"Exception - %@",[exception description]); 
    exit(EXIT_FAILURE); 
} 

把它放在你main.m文件,因此,只要你不捕捉异常,并且它泡到主,它不会使它崩溃而不让你知道发生了什么事。

+0

没有帮助... – 2012-04-01 10:47:13

+0

控制台显示的东西吗? – 2012-04-01 10:54:48

0

这个崩溃发生。在你的委托的applicationDidFinishLaunchingWithOptions方法被调用之前。

尝试:

  1. 重启设备。
  2. 断开连接并重新连接设备。
  3. 重新启动您的计算机。
相关问题