Приложение вылетает при запуске на устройстве, но нормально на симуляторе - PullRequest
2 голосов
/ 01 апреля 2012

Мое приложение отлично работает в симуляторе, но вылетает на устройстве. Как мне выяснить, что вызывает сбой на устройстве?

Журнал аварий:

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 голосов
/ 01 апреля 2012

Попробуйте удалить приложение с вашего устройства. Кроме того, о каком устройстве мы говорим (iPhone 3GS, 4, 4s, iPad, iTouch (поколение?) И т. Д.

Вот что я хотел бы проверить, если удаление приложения ничего не решает (при условии, что вы запускаете приложение на устройстве через XCode):

  1. Поместите оператор NSLog в метод applicationDidFinishLaunchingWithOptions в AppDelegate. Это по крайней мере скажет вам, успешно ли Springboard запустил приложение.
  2. Убедитесь, что вы не установили графические файлы (изображение заставки, раскадровку, файл пера, элемент пользовательского интерфейса и т. Д.), Которые предназначены только для отображения на сетчатке или не предназначены для устройства, на котором вы ее запускаете.
    1. Если выполняется этот оператор NSLog, начните ставить точки останова, начиная с всего, что вы делаете в applicationDidFinishLaunchingWithOptions, и затем переходите по коду, пока приложение не выйдет из строя. Это должно дать вам место, где вам нужно сосредоточиться на устранении неполадок. Вы также можете использовать операторы NSLog вместо точек останова.
0 голосов
/ 20 ноября 2012

Этот сбой происходит до запуска вашего приложения, т.е. перед вызовом метода applicationDidFinishLaunchingWithOptions вашего делегата.

Попытка:

  1. Перезагрузка устройства.
  2. Отключение и повторное подключение вашего устройства.
  3. Перезагрузка компьютера.
0 голосов
/ 01 апреля 2012

Работаете ли вы на одной цели в симуляторе и устройстве?Если это так, просто попробуйте следующее, чтобы начать отладку:

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

Поместите его в свой файл main.m, чтобы каждый раз, когда вы не улавливали исключение и оно всплывало до основного, оно выигрывало 'чтобы он не разбился, не сообщив, что случилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...