Aplikacja na iOS zawiesza się przy każdym uruchomieniu, nie można znaleźć błędu

81

Po pierwszym uruchomieniu aplikacji wszystko działa poprawnie. Wciśnę przycisk stop, wykonam trochę pracy, a kiedy uruchomię go ponownie, wydaje się, że zawiesza się, zanim zdąży cokolwiek załadować. Naciśnij stop, ponownie naciśnij Uruchom i działa dobrze. Dopóki nie powtórzę procesu.

W tym miejscu xcode wyróżnia błąd za pomocą „Wątek 1: sygnał SIGABRT”. Oczywiście nie ma tu nic przydatnego.

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

Konsola debugowania nie pokazuje nic poza (lldb) (więc przypuszczam, że w tym momencie zatrzymuje się, nie ulega awarii) Więc kiedy wykonuję BTto, co otrzymuję:

(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) 

Oto, co zrobiłem do tej pory:

  • Przeprowadzono „czyszczenie”
  • Zresetowałem symulatory i zresetowałem komputer
  • Zakomentowałem cały kod w kontrolerze widoku, nadal się zawiesza
  • Zakomentowałem cały kod w delegacie aplikacji, nadal ulega awarii
  • ALE .... Uruchomiłem aplikację na urządzeniu poza Xcode i wydaje się, że działa idealnie.
  • (EDYTUJ) Usunąłem / ponownie zainstalowałem xcode i całą zawartość (symulatory, dokumenty) z różnych folderów pamięci podręcznej (to powstrzymuje xcode przed automatyczną ponowną instalacją starych po nowym pobraniu). Nadal nie mogę jednak znaleźć miejsca, w którym przechowywane są narzędzia wiersza poleceń. Nadal się zawiesza.

Mimo to aplikacje nadal ulegają awarii co drugie / drugie uruchomienie.

Rzecz w tym, że nie miałem żadnych problemów do ostatniej aktualizacji Xcode. Czy to może być błąd Xcode?

(EDYCJA) Używam również najnowszych wersji deweloperskich OSX. Czy to może przeszkadzać?

Beau Nouvelle
źródło
Czy próbowałeś uruchomić pusty projekt na symulatorze iOS i na podłączonym / odłączonym urządzeniu?
Reck Hou
@ReckHou Okay wow, ta sama kwestia w zupełnie nowym projekcie. Co może być przyczyną? Czy jest jakiś sposób na obejście tego poza ponowną instalacją xcode?
Beau Nouvelle
Już mamy dwie osoby z tym problemem. (po ostatniej aktualizacji pojawia się podobny błąd) Obecnie używam AppCode do następnej aktualizacji Xcode z naprawionym błędem. (Moje pytanie stackoverflow.com/questions/16113036/ ... )
Ilya Ilin Kwietnia
5
Zacząłem widzieć to samo po aktualizacji do OSX 10.8.4 wcześniej. Nie miałem żadnych problemów z Xcode 4.6.2 na OSX 10.4.3. Wydaje się, że problemy znikają, jeśli przełączę się z LLDB na GDB, więc może to być spowodowane przez debugger (Xcode 4.6.2 LLDB w połączeniu z OSX 10.8.4).
Matej Bukovinski
1
Otrzymuję to samo po aktualizacji do 10.8.4. Co drugi start. Zresetuj symulator, zrestartuj Xcode, nie ma znaczenia. Natychmiastowa awaria w main (). Co drugi bieg. Dzięki za pomysł GDB - to działa.
Graham Perks

Odpowiedzi:

75

Wydaje się, że jest to połączenie OS X 10.8.4 i LLDB . Jak mówi kenster, przejście na GDB sprawia, że ​​problem znika.

Edycja:
jest to spowodowane sytuacją wyścigu na serwerze debugowania (słyszę).

Oto rozwiązanie, jeśli chcesz nadal używać LLDB: Zamiast klikać Uruchom, gdy aplikacja jest już uruchomiona w symulatorze, wyłącz ją w Xcode (⌘-.), Powiedz „Uwielbiam Xcode” 5 razy i uruchom ją ponownie (⌘- R). Nie zawiesza się, przetestowałem to.


Naprawiono w Xcode 4.6.3.

Nevan King
źródło
Naprawdę nie działa dobrze. Wystrzelenie prawie dławi się za każdym razem. Przejście na GDB jest dużo bardziej stabilnym rozwiązaniem, jak na razie, dopóki Apple nie naprawi swoich rzeczy.
Jonny
2
Ty i pytający jesteście moimi nowymi ulubionymi ludźmi. Doprowadzało mnie to do szaleństwa, do miejsca, w którym miałem wysłać MBP do naprawy.
Kalle
W 10.9 i Xcode 5 GDB został usunięty i teraz jest to wszystko LLDB. Ale wszystko działa tak, jak powinno!
Beau Nouvelle
Argh! Powrót do przestarzałego kompilatora, tylko po to, aby naprawić (naprawdę bolesny) błąd w zupełnie nowym, najnowocześniejszym kompilatorze, jest dużym problemem… Ale nie ma wyboru, będę musiał to zrobić.
MonsieurDart
Aktualizacja do 4.6.3 to zrobiła - nawet nie wiedziałem, że wersja została wydana.
David H,
11

Ja też miałem ten problem. Spójrz na ten post. Aplikacja Xcode 4.6.2 ulega awarii przy każdym drugim uruchomieniu

Zasadniczo zmień swój debugger z LLDB na GDB. Nie mogę uwierzyć, że było to spowodowane błędami LLDB.

kenster
źródło
O mój Boże… Naprawiono. Jestem do tego tak przyzwyczajony, że za każdym razem, gdy prowadzę projekt, przygotowuję się do wściekłości. Ale nic się nie dzieje. Wielkie dzięki. Poinformuje Apple w moim raporcie o błędzie.
Beau Nouvelle
2
Dzięki za informację, wczoraj doprowadzało mnie do szału. Dlaczego zawsze czekam, aż wyrwę wszystkie (pozostałe) włosy, zanim wyszukam TUTAJ! LOL.
Bertie,
3

Przełączenie na GDB lub ponowne uruchomienie urządzenia / hosta nie rozwiązuje problemu w moim środowisku.

Jednak zmodyfikowanie elementu docelowego Run w skojarzonym schemacie XCode, aby nie uruchamiało się już automatycznie, ale zamiast tego „Poczekaj na uruchomienie aplikacji HelloWorld .

Jedyną wadą jest to, że oznacza to ręczne uruchomienie aplikacji na urządzeniu. Debugger zostanie wtedy połączony.

Mekugi
źródło