应用程序在设备启动时崩溃,但在模拟器上运行正常

时间:2012-04-01 10:13:42

标签: objective-c ios xcode

我的应用程序在模拟器中完美运行但在设备上崩溃。我如何弄清楚它在设备上崩溃的原因?

崩溃日志:

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

3 个答案:

答案 0 :(得分:0)

您是否在模拟器和设备中运行相同的目标?如果是这样,只需尝试以下操作即可开始调试:

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

将它放在你的main.m文件中,所以每当你没有捕获异常,并且它冒泡到主要时,它不会让它崩溃而不让你知道发生了什么。

答案 1 :(得分:0)

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

如果删除应用程序没有解决任何问题,我会检查以下内容(假设您通过Xcode在设备上运行应用程序):

  1. 在AppDelegate的applicationDidFinishLaunchingWithOptions方法中放置一个NSLog语句。这至少会告诉你跳板是否成功启动了应用程序。
  2. 确保您没有设置任何仅为视网膜显示器设计的图形文件(启动画面图像,故事板,Nib文件,UI元素等),或者不是为您运行它的设备设计的。
    1. 如果执行了NSLog语句,则开始将断点放在applicationDidFinishLaunchingWithOptions中正在执行的任何操作中,然后逐步执行代码直到应用程序崩溃。这应该为您提供需要集中精力进行故障排除的地方。您也可以使用NSLog语句代替断点。

答案 2 :(得分:0)

此崩溃发生在您的应用启动之前,即。在您的委托的applicationDidFinishLaunchingWithOptions方法被调用之前。

尝试:

  1. 重新启动设备。
  2. 断开并重新连接设备。
  3. 重新启动计算机。