Когда я впервые запускаю приложение, кажется, что все работает нормально. Я нажимаю кнопку остановки, поработаю, и когда я снова запускаю его, кажется, что он вылетает еще до того, как успевает что-нибудь загрузить. Нажмите стоп, снова нажмите «Выполнить», и все работает нормально. Пока я не повторю процесс.
Здесь xcode выделяет ошибку с помощью «Thread 1: signal SIGABRT». Тут явно ничего полезного.
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class]));
}
}
Консоль отладки ничего не показывает, кроме (lldb) (так что я предполагаю, что она останавливается, а не дает сбой в этот момент) Итак, когда я выполняю BT
это, я получаю:
(lldb) bt
* thread #1: tid = 0x1c03, 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
frame #0: 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x99ea1b2f libsystem_c.dylib`pthread_kill + 101
frame #2: 0x04a7057b libsystem_sim_c.dylib`abort + 140
frame #3: 0x01dc0b4e GraphicsServices`GSRegisterPurpleNamedPort + 348
frame #4: 0x01dc069f GraphicsServices`_GSEventInitialize + 123
frame #5: 0x01dc0c1f GraphicsServices`GSEventInitialize + 36
frame #6: 0x000163f9 UIKit`UIApplicationMain + 600
frame #7: 0x00001d0d Guitar Chord Poker HD`main(argc=1, argv=0xbffff32c) + 141 at main.m:16
frame #8: 0x00001c35 Guitar Chord Poker HD`start + 53
(lldb)
Вот что я сделал до сих пор:
- Выполнен "Чистый"
- Я сбросил симуляторы и перезагрузил свой компьютер
- Я закомментировал весь код в контроллере представления, все еще вылетает
- Я закомментировал весь код в делегате приложения, все еще вылетает
- НО .... Я запустил приложение на устройстве за пределами Xcode, и, похоже, оно работает отлично.
- (РЕДАКТИРОВАТЬ) Я удалил / переустановил xcode и весь контент (симуляторы, документы) из различных папок кеша (это не позволяет xcode автоматически переустанавливать старые после новой загрузки). Тем не менее, все еще не могу найти, где хранятся инструменты командной строки. По-прежнему вылетает.
Несмотря на все это, приложения все равно вылетают при каждом втором запуске.
Дело в том, что у меня не было проблем до последнего обновления Xcode. Может быть, ошибка Xcode?
(EDIT) Я также использую последние версии OSX для разработчиков. Может ли это мешать?
Ответы:
Кажется, это комбинация OS X 10.8.4 и LLDB . Как говорит Кенстер, переход на GDB решает проблему.
Редактировать:
это вызвано состоянием гонки на сервере отладки (я слышал).
Вот исправление, если вы хотите продолжать использовать LLDB: вместо того, чтобы нажимать «Выполнить», когда приложение уже запущено в симуляторе, убейте его в Xcode (⌘-.), Скажите «Я люблю Xcode» 5 раз и запустите его снова (⌘- Р). Не вылетает, тестировал.
Исправлено в Xcode 4.6.3.
источник
У меня тоже была эта проблема. Взгляните на этот пост. Приложение Xcode 4.6.2 аварийно завершает работу при каждом втором запуске
В основном измените свой отладчик с LLDB на GDB. Я не могу поверить, что это произошло из-за того, что LLDB глючит.
источник
Переключение на GDB или перезагрузка устройства / хоста не решает проблему в моей среде.
Однако изменение цели Run в связанной схеме XCode так, чтобы она больше не запускалась автоматически, а вместо этого указывала «Подождите, пока запустится HelloWorld .app» .
Единственный недостаток в том, что это подразумевает запуск приложения на устройстве вручную. Затем подключится отладчик.
источник