Додаток iOS аварійно завершує роботу, не вдається знайти помилку


81

Перший раз, коли я запускаю програму, здається, все працює нормально. Я натисну кнопку зупинки, виконаю якусь роботу, і коли я піду її запускати знову, здається, що вона аварійно завершується, перш ніж вона може щось завантажити. Натисніть «Зупинити», натисніть «Виконати» ще раз, і це працює нормально. Поки я не повторю процес.

Тут xcode виділяє помилку за допомогою "Thread 1: signal SIGABRT". Очевидно, нічого корисного тут немає.

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class]));
    }
}

Консоль налагодження не показує нічого, крім (lldb) (Отже, я припускаю, що її зупинка, а не збій у цей момент) Отже, коли я виконую a 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, і, схоже, він працює чудово.
  • (EDIT) Я видалив / переінсталював xcode та весь вміст (симулятори, документи) з різних папок кешу (Це зупиняє xcode від автоматичної переінсталяції старих після нового завантаження). Досі не можу знайти, де зберігаються інструменти командного рядка. Досі падає.

Незважаючи на все це, програми все одно аварійно працюють щосекунди / інші запуски.

Справа в тому, що до останнього оновлення Xcode у мене не було проблем. Це може бути помилка Xcode?

(EDIT) Я також запускаю останні версії OSX для розробників. Чи може це заважати?


Ви намагалися запустити порожній проект на симуляторі iOS та на підключеному / відключеному пристрої?
Reck Hou

@ReckHou Добре вау, так, це питання про абсолютно новий проект. Що може бути причиною? Будь-який спосіб, окрім перевстановлення xcode?
Beau Nouvelle

У нас уже є дві людини з цією проблемою. (після останнього оновлення я отримую подібну помилку) На даний момент я використовую AppCode до наступного оновлення Xcode з виправленою помилкою. (Моє запитання stackoverflow.com/questions/16113036/… )
Ілля Ілін

5
Я почав бачити те саме після оновлення до OSX 10.8.4 раніше сьогодні. У мене не було проблем з Xcode 4.6.2 на OSX 10.4.3. Здається, проблеми зникають, якщо я переходжу з LLDB на GDB, тому це може бути спричинено налагоджувачем (Xcode 4.6.2 LLDB у поєднанні з OSX 10.8.4).
Matej Bukovinski

1
Я отримую те саме після оновлення до 10.8.4. Кожен другий запуск. Скинути симулятор, перезапустити Xcode, немає різниці. Миттєвий збій в main (). Кожен другий біг. Дякую за ідею GDB - це працює тут.
Грем Перкс

Відповіді:


75

Здається, це комбінація OS X 10.8.4 та LLDB . Як каже Кенстер, перехід на GDB змушує проблему зникнути.

Редагувати:
це спричинено умовою перегонів на сервері налагодження (я чую).

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


Виправлено в Xcode 4.6.3.


Це не дуже добре працює. Запуск майже задихається кожен інший раз. Перехід на GDB є набагато стабільнішим рішенням, поки що, поки Apple не виправить їх речі.
Джонні

2
Ви і аскер - мої нові улюблені люди. Це зводило мене з глузду, туди, куди я збирався відправити свій MBP на ремонт.
Калле

З 10.9 та Xcode 5 GDB було видалено, і це все LLDB зараз. Але все це працює як слід!
Beau Nouvelle

Ага! Повернутися до застарілого компілятора, просто виправити (справді болючу) помилку в абсолютно новому сучасному компіляторі - велика проблема ... Але вибору немає, мені доведеться це зробити.
MonsieurDart

Оновлення до версії 4.6.3 зробило - я навіть не знав, що ця версія вийшла.
David H

11

У мене також було це питання. Погляньте на цю публікацію. Додаток Xcode 4.6.2 аварійно завершує роботу під час кожного другого запуску

В основному змініть свій налагоджувач з LLDB на GDB. Я не можу повірити, що це було через помилку LLDB.


Боже мій .... Виправлено. Я настільки звик до цього, що кожного разу, коли запускаю проект, я постійно готуюся до сказу. Але нічого не відбувається. Дякую купи. Повідомлю Apple у своєму звіті про помилки.
Beau Nouvelle

2
Дякую за інформацію, вчора цілий день зводив мене з розуму. Чому я завжди чекаю, поки не вирву все своє (що залишилося) волосся, перш ніж шукати ТУТ! ЛОЛ.
Берті

3

Перехід на GDB або перезавантаження пристрою / хосту не вирішує проблему в моєму середовищі.

Однак, змінивши ціль "Виконати" у відповідній схемі XCode, вона більше не запускається автоматично, а замість "Зачекайте, поки HelloWorld .app запуститься" .

Єдиним недоліком є ​​те, що це передбачає ручний запуск програми на пристрої. Потім відладчик підключиться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.