Приложение iOS вылетает при каждом втором запуске, не удается найти ошибку

Когда я впервые запускаю приложение, кажется, что все работает нормально. Я нажимаю кнопку остановки, поработаю, и когда я снова запускаю его, кажется, что он вылетает еще до того, как успевает что-нибудь загрузить. Нажмите «Стоп», снова нажмите «Выполнить», и все работает нормально. Пока не повторю процесс.

Здесь 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?

(РЕДАКТИРОВАТЬ) Я также использую последние версии OSX для разработчиков. Может ли это мешать?


person Beau Nouvelle    schedule 19.04.2013    source источник
comment
Вы пробовали запустить пустой проект на симуляторе iOS и на подключенном / отключенном устройстве?   -  person Reck Hou    schedule 20.04.2013
comment
@ReckHou Хорошо, да, та же проблема в новом проекте. Что может быть причиной? Любой способ обойти это, кроме переустановки xcode?   -  person Beau Nouvelle    schedule 21.04.2013
comment
У нас уже есть два человека с этой проблемой. (после последнего обновления я получаю аналогичную ошибку) В настоящее время я использую AppCode до следующего обновления Xcode с исправленной ошибкой. (Мой вопрос stackoverflow.com/questions/16113036/)   -  person Ilya Ilin    schedule 22.04.2013
comment
@IlyaIlin Спасибо за это, вроде нас сейчас трое. Я никогда не должен был обновляться, все равно ничего нового не добавлено. Заглядывая в AppCode.   -  person Beau Nouvelle    schedule 23.04.2013
comment
Я здесь испытываю то же самое. Кто-нибудь из вас, ребята, догадывается, что было причиной этого?   -  person Christian A. Strømmen    schedule 15.05.2013
comment
@ ChristianA.Strømmen Нет, я удалил xcode и переустановил его, все то же самое. Я думаю, это может иметь какое-то отношение к инструментам командной строки. Но пока не придумали, как их удалить. Пока я просто терплю это.   -  person Beau Nouvelle    schedule 17.05.2013
comment
Когда вы запускаете приложение на устройстве, попробуйте перейти в Организатор в Xcode и проверить консоль / журналы устройства на предмет подсказок о том, в чем может быть проблема.   -  person SashaZd    schedule 21.05.2013
comment
@SashaZd Я обновил вопрос. Я проверил журналы консоли, но не смог заставить приложение снова вылетать. Тестирование на устройстве, похоже, на данный момент исправилось, и у меня нет предыдущих журналов.   -  person Beau Nouvelle    schedule 22.05.2013
comment
Хорошо .. это точно при каждом втором запуске происходит сбой?   -  person badweasel    schedule 22.05.2013
comment
Единственное, что я могу придумать, - это то, что приложение не может вылетать и запускаться. Вы нажимаете кнопку «Стоп» или нажимаете кнопку «Домой» на устройстве / SIM-карте, а затем останавливаетесь. Влияет ли это на частоту сбоев? Одно отличие состоит в том, что пользовательские настройки по умолчанию записываются (когда вы попадаете домой). Я уверен, что есть и другие. Я бы заштукатурил эту штуку с помощью NSLog's и сузил бы, где именно она рушится.   -  person badweasel    schedule 22.05.2013
comment
Я предполагаю, что вы удалили приложение на симуляторе, а не просто переписываете поверх него. У меня были приложения, в которых замена актива не перезаписывалась в пакете на сим-карте. Обязательно зарегистрируйтесь в / Users / [youruser] / Library / Application Support / iPhone Simulator и покажите содержимое пакета в вашем комплекте приложений, чтобы убедиться, что там есть все правильные версии всех ваших ресурсов. Возможно, это устаревший файл.   -  person badweasel    schedule 22.05.2013
comment
@badweasel Я только что провел около 20 запусков, и вот результаты. I = успешно / X = сбой ..... I I X I X I I X I X I X I I X I X I X I I X I I ---- Устаревший файл Я проверю это сейчас   -  person Beau Nouvelle    schedule 22.05.2013
comment
Как выходишь, когда не вылетает? Нажать на остановку или домой, а затем остановиться?   -  person badweasel    schedule 22.05.2013
comment
Я бью стоп. То же самое происходит с новыми проектами. Так что я не верю, что это может быть проблема с файлом. Я попробую попасть домой.   -  person Beau Nouvelle    schedule 22.05.2013
comment
Вы создаете совершенно свежий ios-проект, используя один из шаблонов, и он это делает? С вашей установкой должно быть что-то неладное. На самом деле это имеет больше смысла, чем какая-то случайная ошибка.   -  person badweasel    schedule 22.05.2013
comment
Да, я думаю, это происходит. Но я все переустановил. Я даже установил старую версию xcode, и происходит то же самое. Кроме того, приложение отлично работает в симуляторе и устройстве, только если оно не запускается через отладчик. Я также всегда получаю сообщение о сбое сборки или нет. Все это началось после установки инструментов командной строки и обновления xcode. NSLogs и breaks здесь не работают, терпят неудачу еще до того, как это начнется. Даже в новых проектах.   -  person Beau Nouvelle    schedule 22.05.2013
comment
Нажатие кнопки остановки может вызвать всевозможные проблемы, поскольку оно ненормально завершает процессы. Попробуйте следующее: запустите приложение, а затем, прежде чем нажать кнопку «Стоп», нажмите кнопку «Домой» на устройстве, чтобы запустить приложение в фоновом режиме. Подождите 10 секунд, ЗАТЕМ нажмите стоп. Посмотрите, сможете ли вы запустить приложение без сбоев. Если это так, вы убиваете фоновую задачу, которая, вероятно, имеет дескриптор какого-либо ресурса в плохом состоянии.   -  person software evolved    schedule 25.05.2013
comment
Помогает ли это: stackoverflow.com/questions/3589631/   -  person NoelHunter    schedule 28.05.2013
comment
Вы пробовали включить зомби?   -  person PWiggin    schedule 29.05.2013
comment
У меня было это раньше, и я решил это, удалив приложение в симуляторе и запустив снова. Если это не сработает, запустите симулятор ПЕРЕД запуском приложения, чтобы он отображал главный экран. ЗАТЕМ запустите приложение.   -  person Kenn Cal    schedule 30.05.2013
comment
@NoelHunter Похоже, это очень тесно связано с моей проблемой, когда она вылетает еще до того, как что-нибудь начнется, но я уже рассмотрел все предложения в этом посте.   -  person Beau Nouvelle    schedule 30.05.2013
comment
@Vrol Нет, только что попробовал, все равно вылетает. Я не делаю ничего другого, чем всегда. После недавних обновлений проблем много. Но возвращение назад, похоже, тоже не помогло. Чертовски близко к переустановке всей ОС.   -  person Beau Nouvelle    schedule 30.05.2013
comment
Я начал видеть то же самое после обновления до OSX 10.8.4 ранее сегодня. У меня не было проблем с Xcode 4.6.2 на OSX 10.4.3. Проблемы, похоже, исчезнут, если я переключусь с LLDB на GDB, поэтому это может быть вызвано отладчиком (Xcode 4.6.2 LLDB в сочетании с OSX 10.8.4).   -  person Matej Bukovinski    schedule 05.06.2013
comment
У меня то же самое после обновления до 10.8.4. Каждый второй запуск. Сбросить симулятор, перезапустить Xcode, без разницы. Немедленный сбой в main (). Каждый второй пробегает. Спасибо за идею GDB - она ​​здесь работает.   -  person Graham Perks    schedule 05.06.2013


Ответы (3)


Кажется, это комбинация OS X 10.8.4 и LLDB. Как говорит Кенстер, переход на GDB решает проблему.

Изменить:
Это вызвано состоянием гонки на сервере отладки (я слышал).

Вот исправление, если вы хотите продолжать использовать LLDB: вместо того, чтобы нажимать «Выполнить», когда приложение уже запущено в симуляторе, убейте его в Xcode (⌘-.), Скажите «Я люблю Xcode» 5 раз и запустите его снова (⌘- Р). Вылетать не будет, тестировал.


Исправлено в Xcode 4.6.3.

person nevan king    schedule 05.06.2013
comment
Это действительно не работает. Запуск довольно сильно задыхается через раз. Переход на GDB - гораздо более стабильное решение, пока Apple не исправит свои проблемы. - person Jonny; 09.06.2013
comment
Вы и спрашивающий - мои новые личные любимые люди. Это сводило меня с ума, когда я собирался отправить свой MBP на ремонт. - person Kalle; 11.06.2013
comment
В 10.9 и Xcode 5 GDB был удален, и теперь это все LLDB. Но все работает как надо! - person Beau Nouvelle; 12.06.2013
comment
Ага! Возврат к устаревшему компилятору просто для исправления (действительно болезненной) ошибки в новейшем компиляторе - большая проблема… Но выбора нет, мне придется это сделать. - person MonsieurDart; 13.06.2013
comment
Обновление до 4.6.3 сделало это - я даже не знал, что версия вышла. - person David H; 10.08.2013

У меня тоже была эта проблема. Взгляните на этот пост. Приложение Xcode 4.6.2 аварийно завершает работу при каждом втором запуске

В основном измените свой отладчик с LLDB на GDB. Я не могу поверить, что это было из-за того, что LLDB глючил.

person kenster    schedule 05.06.2013
comment
Боже мой .... Исправлено. Я настолько к этому привык, что каждый раз, когда запускаю проект, я готовлюсь злиться. Но ничего не происходит. Куча благодарностей. Сообщу об этом Apple в моем отчете об ошибке. - person Beau Nouvelle; 06.06.2013
comment
Спасибо за информацию, вчера сводила меня с ума весь день. Почему я всегда жду, пока я вырву все свои (оставшиеся) волосы, прежде чем искать ЗДЕСЬ! РЖУ НЕ МОГУ. - person Bertie; 12.06.2013

Переключение на GDB или перезагрузка устройства / хоста не решает проблему в моей среде.

Однако изменение цели «Выполнить» в связанной схеме XCode так, чтобы она больше не запускалась автоматически, а вместо этого выполнялась «Дождитесь запуска HelloWorld .app».

Единственный недостаток в том, что это подразумевает запуск приложения на устройстве вручную. Затем подключится отладчик.

person Mekugi    schedule 30.09.2013