Błąd podczas testowania na symulatorze iOS: Nie można zarejestrować się na serwerze bootstrap

370

Testowałem moją aplikację na symulatorze, gdy zawiesił się po kliknięciu przycisku UIAlertView. Przestałem tam debugować, wprowadziłem pewne zmiany w kodzie i ponownie zbudowałem aplikację. Teraz, gdy uruchamiam aplikację, pojawia się ten błąd w konsoli

Nie można zarejestrować com.myApp.debug na serwerze bootstrap. Błąd: nieznany kod błędu. Ogólnie oznacza to, że inna instancja tego procesu już działała lub jest zawieszona w debuggerze. Program odebrał sygnał: „SIGABRT”.

Próbowałem usunąć aplikację z symulatora, wykonując czystą kompilację, ale nadal pojawia się ten błąd, gdy próbuję uruchomić aplikację.

Co powinienem zrobić, aby móc ponownie uruchomić aplikację na moim symulatorze?

lostInTransit
źródło
2
Wszelkie sugestie dotyczące tego, co zrobić, gdy tak się stanie podczas testowania na urządzeniu? Próbowałem ponownie uruchomić urządzenie, Xcode.
iPadDeveloper2011
1
Próbowałem też usunąć aplikację na urządzeniu, zamknąć wszystkie aktywne aplikacje (dwukrotnie kliknąć w domu, przytrzymać palec na ikonie aplikacji, dotknąć „-” podpisać), ponownie uruchamiając Xcode, wylogowując się i ponownie. Jak dotąd nic nie działa.
iPadDeveloper2011
Spróbuj „Opróżnij pamięć podręczną” w menu XCode. To też pomaga.
lostInTransit
3
Wszyscy, którzy napotykają ten problem, zorientowali się później, że dzieje się to najczęściej z powodu błędu w kodzie. Poszukaj fragmentu kodu, który zajmuje dużo czasu wykonania lub zapętla aplikację.
lostInTransit
4
Kiedy tak się dzieje, po prostu zabijam SimulatorBridge i wychodzę z symulatora. ps ax | grep SimulatorBridge
Elland

Odpowiedzi:

162

Spróbuj wyjść i ponownie uruchomić symulator? Jeśli „gorzej się pogorszy”, zawsze możesz spróbować uruchomić ponownie: z mojego doświadczenia wynika, że ​​powinno to naprawić.

Elliot Kroo
źródło
44
Skończyło się na ponownym uruchomieniu systemu! Nadal nie wiem, co spowodowało problem!
lostInTransit
6
Jak mówi komentarz poniżej, zwykle można zobaczyć zawieszony proces w monitorze aktywności i zabić go tam.
mxcl
13
Nienawidzę restartowania :) Wyjście z zawieszonego procesu działało dla mnie: ps ax | grep Simulator pokaże uruchomione aplikacje, w moim przypadku zawieszono MyApp.app.
BadPirate 28.01.11
12
Ponowne uruchomienie nie pomogło
Pascal Klein
10
Często dostaję to w XCode 4.3. Ponowne uruchomienie aplikacji lub zamknięcie symulatora nie pomaga. Muszę ponownie uruchomić komputer, aby działał.
Øystein
242

status: było to widoczne ostatnio w systemie Mac OS 10.8 i Xcode 4.4.

tl; dr: Może się to zdarzyć w dwóch kontekstach: podczas uruchamiania na urządzeniu i podczas uruchamiania na symulatorze. Podczas pracy na urządzeniu odłączanie i ponowne podłączanie urządzenia wydaje się naprawiać problemy.

Mike Ash zasugerował

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

To nie działa cały czas. W rzeczywistości dla mnie to nigdy nie działało, ale w niektórych przypadkach wyraźnie działa. Po prostu nie wiem, które przypadki. Warto więc spróbować.

W przeciwnym razie jedynym znanym sposobem rozwiązania tego problemu jest ponowne uruchomienie uruchomionego użytkownika. Ponowne uruchomienie spowoduje to, ale istnieje mniej drastyczny / szybszy sposób. Musisz utworzyć innego użytkownika administracyjnego, ale musisz to zrobić tylko raz. Kiedy coś się zaklinuje, wyloguj się jako ty, zaloguj się jako ten użytkownik i zabij uruchomionego, który należy do twojego głównego użytkownika, np.

sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`

zastępując swoją główną nazwę użytkownika user_id. Zalogowanie się ponownie, gdy normalny użytkownik powróci do normalnego stanu. Trochę bolesne, ale mniej niż pełne ponowne uruchomienie.

Detale:

To zaczęło się częściej zdarzać w Lion / Xcode 4.2. (Osobiście nigdy nie widziałem tego przed tą kombinacją).

Błąd wydaje się być uruchomiony, co dziedziczy proces aplikacji jako dziecko, gdy debugger przestaje debugować go bez zabijania. Zazwyczaj jest to sygnalizowane przez aplikację, która staje się zombie, mając status procesu Z w ps.

Wydaje się, że głównym problemem jest serwer nazw bootstrap, który jest zaimplementowany podczas uruchamiania. To (o ile rozumiem) mapuje identyfikatory aplikacji na porty mach. Po uruchomieniu błędu aplikacja umiera, ale nie jest usuwana z mapy serwera nazw serwera bootstrap, w wyniku czego serwer bootstrap odmawia rejestracji innej instancji aplikacji pod tą samą nazwą.

Spodziewano się (patrz komentarze), że wymuszono uruchomienie wait() dla zombie naprawi rzeczy, ale tak nie jest. To nie status zombie jest głównym problemem (dlatego niektóre zombie są łagodne), ale serwer nazw bootstrap i nie ma znanego sposobu na usunięcie tego braku zabijania.

Wygląda na to, że błąd został wywołany przez coś złego między Xcode, gdb i uruchomionym użytkownikiem. Właśnie powtórzyłem klin, uruchamiając aplikację w symulatorze iPhone'a, zatrzymując ją w gdb, a następnie wykonując kompilację i uruchamiając na symulatorze iPada. Wydaje się być wrażliwy na przełączanie symulatorów (iOS 4.3 / iOS 5, iPad / iPhone). Nie zdarza się to cały czas, ale dość często, kiedy często zmieniam symulatory.

Zabijanie uruchomione, gdy jesteś zalogowany, spieszy twoją sesję. Wylogowanie i ponowne zalogowanie nie zabija uruchomionego użytkownika; OS X utrzymuje obecny proces. Ponowne uruchomienie naprawi rzeczy, ale to bolesne. Powyższe instrukcje są szybsze.

Przesłałem błąd do Apple, FWIW. rdar: // 10330930

smparkes
źródło
2
Dziękujemy za dokładne wyjaśnienie nowego zachowania Lion / XCode4.2. Wydaje się, że zdarza się to częściej podczas debugowania dwóch oddzielnych aplikacji.
samkass
2
To nie tylko lew. Nadal korzystam z systemu Snow Leopard i często pojawia się ten błąd od czasu wydania XCode 4.2. (Używany do korzystania z XCode 3.x, aż do wydania iOS SDK 5.0.)
Jonny
3
Dzięki za informację ... To ostatnio zdarza się dla mnie niesamowicie często ... Dwa razy w ciągu ostatnich 10 minut. Trochę trudno jest uzyskać solidny przepływ pracy, gdy muszę ciągle restartować. Cóż, wyłącz, aby ponownie uruchomić komputer.
Brad Goss,
1
@smparkes: Wydaje się, że zdarza się to częściej niż wcześniej. Właśnie zmieniam bundleID i wszystko działa ponownie, ale denerwuje mnie praca z logiką CoreData, którą próbujesz debugować. Przyznaję, że mniej irytujące niż ponowne uruchomienie.
Mike A
2
4.3.1 i stało się właśnie teraz ... bardzo denerwujące. Dla mnie ponowne uruchomienie samego iPhone'a normalnie go rozwiązuje, nie muszę ponownie uruchamiać komputera Mac. Tarta wydarzyła się w XCode 4.2 pod Snow Leopardem, dla mnie mniej więcej we wrześniu 2011 roku.
TheEye
70

Zauważyłem, że zacząłem mieć ten problem z Lion + Xcode 4.2. Wystąpił również problem w Xcode 4.3.

Próbowałem wszystkich sugestii, ale żadna z nich nie działała inaczej niż pełne ponowne uruchomienie.

Oto, w jaki sposób określasz, czy potrzebujesz szybko zrestartować komputer.

Wymień wszystkie swoje procesy Zombie:

ps -el | grep 'Z'

Jeśli zobaczysz swoją aplikację na liście jako proces Zombie, będziesz musiał ponownie uruchomić komputer. Komunikat o błędzie mówi: „Ogólnie oznacza to, że inna instancja tego procesu już działała lub jest zawieszona w debuggerze”. Xcode wykrywa proces Zombie, którego nie można zabić. Jedynym sposobem, aby to naprawić, jest ponowne uruchomienie systemu. :(

EDIT, 20120823: Mam lepszą wiedzę na temat procesów Zombie, więc chciałem zaktualizować tę odpowiedź. Proces Zombie jest tworzony, gdy proces nadrzędny nie wywołuje funkcji wait () (poczekaj, aż proces zmieni stan) na kończącym się procesie potomnym. Nie możesz uruchomić polecenia „zabij” bezpośrednio w procesie Zombie, ale jeśli zabijesz proces nadrzędny, proces potomny zombie zostanie „zebrany” i usunięty z tabeli procesów.

Dawno nie widziałem tego problemu, więc nie sprawdziłem, co to jest proces nadrzędny w tym scenariuszu. Alternatywą dla zabicia procesu nadrzędnego jest ponowne uruchomienie systemu. :)

jyap
źródło
Dzięki, miałem 7 wystąpień 3 programów, nad którymi pracowałem jako zombie.
ArtSabintsev
1
Ponowne uruchomienie jest wystarczające, ale nie konieczne, jak wspomniano powyżej. Czasami są też zombie, które nie powodują problemu, więc szukanie zombie w ten sposób nie jest tak naprawdę wiarygodnym środkiem. Jedynym pewnym znakiem jest wiadomość w Xcode.
smparkes,
Czy próbowałeś zabić te procesy zombie jako root? Zrestartowałem się, zanim pomyślałem o zrobieniu tego.
Ryan H.
1
@smparkes, tak, to oczywiste na podstawie tego pytania, które omawia ten komunikat o błędzie.
jyap
1
@HZC, tak, nie możesz zabijać procesów zombie nawet jako root.
jyap
20

Właśnie mi się to przydarzyło: błąd pojawiał się tylko na moim urządzeniu, a symulator działał dobrze. W końcu musiałem zresetować urządzenie i błąd zniknął.

n3wscott
źródło
1
to samo zrestartowało urządzenie i zniknęło. Symulator działał dobrze
agente_secreto
15

Ostatnio często mam ten problem. Co mogłoby temu zapobiec? Wylogowanie się i rozwiązanie problemu rozwiązuje problem, ale ... denerwujące jest to robić tak często.

EDYTOWAĆ:

Właśnie znalazłem przyczynę. Miałem błąd w metodzie ApplicationWillTerminate. Więc kiedy kliknę przycisk Stop w oknie Xcode, aplikacja nie mogła poprawnie zakończyć działania i zaczęła się zawieszać.

sprawdź Monitor aktywności, aby sprawdzić, czy Twoja aplikacja znajduje się na liście. wymuś zamknięcie, jeśli to możliwe.

śpiewał
źródło
2
Naprawiłem to dla mnie! ps aux | grep Simulator
Jason Prado
Jeśli to pomoże, utworzę ten błąd podczas uruchamiania narzędzia Leak Performance Tools
IssamTP
14

Jeśli uważasz, że twój problem jest spowodowany procesami zombie:

ps -el | grep „Z”
(jak we wcześniejszym komentarzu https://stackoverflow.com/a/8104400/464289 ) i po prostu chcesz natychmiast rozwiązać problem, możesz to zrobić bez ponownego uruchamiania lub zabijania czegokolwiek. Po prostu zmień nazwę pliku wykonywalnego docelowego projektu:

  1. Kliknij projekt w lewym panelu
  2. Wybierz Ustawienia kompilacji w środkowym panelu
  3. W sekcjiOpakowanie ” zmień „ Nazwa produktu ” z $ (TARGET_NAME) na $ (TARGET_NAME) .1

Łatwy!

JRG
źródło
to nie działało dla mnie, otrzymałem ten sam błąd, który otrzymuję: profil obsługi administracyjnej „mataleao2” określa identyfikator aplikacji „au.com.mataleao”, który nie jest zgodny z bieżącym ustawieniem „au.com.mataleao-1”
sapatos
Czy testujesz na symulatorze lub na iPhonie?
JRG
Testuję
7

Cóż, nie ma odpowiedzi, ale przynajmniej jeden test do wykonania. Otwórz terminal i uruchom następującą komendę: „ps-Ael | grep Z”. Jeśli otrzymasz dwa wpisy, jeden „(brzęk)”, a drugi nazwę aplikacji lub firmy, oznacza to, że nie możesz się uruchomić.

Jeśli jesteś programistą, wprowadź krótki błąd i powiedz Apple, jak absolutnie irytujące jest konieczność ponownego uruchomienia komputera, i wspomnij, że mogą skopiować ten błąd na „rdar: // 10401934”, który właśnie wprowadziłem.

David

David H.
źródło
5

Zresetowanie symulatora iOS naprawiło błąd. Chociaż spowoduje to usunięcie wszystkich aplikacji, które masz w Symulatorze, to rozwiązuje problem bez konieczności ponownego uruchamiania komputera.

Możesz zresetować Symulator iOS, wykonując następujące czynności:

1) Przejdź do menu „iOS Simulator”, obok logo Apple () po lewej stronie ekranu głównego.
2) Wybierz „Resetuj zawartość i ustawienia ...”.
3) Przeczytaj komunikat pop, a jeśli się zgadzasz, kliknij „Resetuj”, w przeciwnym razie kliknij „Nie resetuj”.

domthinks
źródło
3
Nie pomaga ani trochę, zamiast tego tracisz całą zawartość / aplikacje / zdjęcia / kontakty
dziwne
1
@strange to symulator. w każdym razie nie zawiera żadnych ważnych informacji. :)
Evgen Bodunov
5
  1. Zamknij symulator
  2. Zatrzymaj uruchamianie aplikacji w xCode.
  3. Otwórz Monitor aktywności i wyszukaj proces działający z aplikacją NAZWA .
  4. Zabij ten proces w Monitorze aktywności
  5. Odbuduj swój projekt i wszystko powinno być gotowe
negrelja
źródło
Wydaje się, że proces ten nie jest zabijany w Monitorze aktywności, nawet przy „Force Quit”
Ferruccio,
4

Miałem problem wspomniany przez @jyap z procesami zombie. Jedynym sposobem na ich usunięcie było ponowne uruchomienie. Zauważyłem jednak, że moi przyjaciele pracujący nad tym samym projektem dostaną ten sam problem, ale mogą zabić symulator bez tworzenia procesu zombie. Całkowicie odinstalowałem Xcode i ponownie go zainstalowałem, i mimo że nadal pojawia się błąd, nie tworzy on procesów zombie, więc nie muszę się restartować.

Zanim to zrobiłem, używałem tego naprawdę brzydkiego obejścia: zmień identyfikator aplikacji i uruchom ponownie. Skończysz z niepotrzebnymi kopiami aplikacji w symulatorze, ale możesz odłożyć na chwilę restart.

Christopher Pickslay
źródło
4

Ten błąd często mi się zdarza, prawie za każdym razem, gdy testuję aplikację w Symulatorze, zmuszając mnie do ponownego uruchomienia.

Oto obejście, jeśli chcesz wykonać trochę pracy:

  • Kliknij swój projekt w nawigatorze projektu
  • Idź do celu -> Informacje
  • Dodaj klucz dla aplikacji nie działa w tle i jest ustawiony na YES.

Oznacza to, że po naciśnięciu przycisku Home w symulatorze lub wyjściu z symulatora aplikacja się nie zawiesza.

Nie zapomnij zmienić tego ustawienia przed dystrybucją! Umieść go na liście kontrolnej wydania :)

Chris Burt-Brown
źródło
1
Jest to niebezpieczne, ponieważ uniemożliwia testowanie zachowania w tle, dopóki nie zapomnisz go zmienić z powrotem.
tc.
@tc: Tak, zgadzam się. Jeśli jednak będziesz zmuszony do ponownego uruchomienia za każdym razem, gdy uruchomisz aplikację na iOS (to właśnie miałem), może to być lepsze niż alternatywa.
Chris Burt-Brown,
4

Jeśli tak się stanie podczas testowania na telefonie iPhone. Po prostu uruchom ponownie telefon. Z tego, co powiedziano mi, telefon lub symulator nadal wierzy, że istnieje instancja uruchomionej aplikacji, więc kiedy była ona ostatnio uruchamiana, nie zakończyła się poprawnie, czy to z powodu błędu w kodzie, czy też telefon / symulator po prostu chciał mieć jęczeć.

Popeye
źródło
4

Wystąpił ten błąd podczas debugowania mojej aplikacji na telefonie iPhone 4. Ciężkie ponowne uruchomienie iPhone'a rozwiązało mój problem. (Wyłączanie zawieszonego iPhone'a ...)

Na komputerze Mac nie miałem procesu zombie, a ponowne uruchomienie komputera Mac nie rozwiązało problemu.

Może ten błąd może objawiać się zarówno na symulatorze, jak i na rzeczywistych urządzeniach?

Craig
źródło
4

Uruchomiłem ponownie urządzenie, działało! :RE

Dziękujemy wszystkim za wspaniałe sugestie.

Haris Hussain
źródło
3

Właśnie miałem ten błąd. Próbowałem ponownie uruchomić symulator i Xcode, ale mój projekt zadziałałby dopiero po wyczyszczeniu i kompilacji. Nie mam pojęcia, co to spowodowało.

Daniel Wood
źródło
3

Miałem rekursywnego setera, który przeleciał przez stos i zabił moją aplikację w taki sposób, że musiałem uruchomić komputer z iPada. Było to możliwe do udowodnienia dzięki poprawce w kodzie.

mobibob
źródło
3

Miałem ten sam problem i rozwiązałem go, wykonując następujące czynności

  • Usuwanie aplikacji z urządzenia,
  • Odłączanie urządzenia od komputera Mac,
  • Wyłączanie i włączanie urządzenia,
  • Zamknięcie i ponowne uruchomienie Xcode,
  • Instrumenty do rzucania,
  • Na koniec wyczyść i zbuduj ponownie.

Zrobiłem też jeszcze jedną rzecz, ponieważ Xcode jest skonfigurowany do używania iOS 5.0, a mój projekt używa iOS 4.3

  • Usuń wszystkie frameworki i dodaj je ponownie.
Joey
źródło
Pytanie dotyczy symulatora. nie dla urządzenia.
wirusowy
3

Alternatywne obejście:

  • Nadaj swojej aplikacji nowy identyfikator. Jeśli nazywa się com.foobar.myapp, nazwij go com.foobar.myapp01

Tracisz wszystkie dane w aplikacji, ponieważ w rzeczywistości jest to nowa aplikacja działająca w odniesieniu do symulatora iPhone'a. To może, ale nie musi być bardziej irytujące niż ponowne uruchomienie - chciałem tylko dodać go do listy.

n13
źródło
3

Powód

Uruchamianie aplikacji w symulatorze przed całkowitym zatrzymaniem poprzednio uruchomionej aplikacji.

Poprawka

Poczekaj, aż zobaczysz przycisk Stop ponownie aktywny, zanim ponownie uruchomisz.

(Używam Xcode 4.2.1. Ten problem występował bardzo często po aktualizacji do OS X Lion).

5 pasków
źródło
Właśnie miałem ten błąd ponownie. Próbowałem wszystkiego i wreszcie naprawiłem restart iPada.
barów
2

Naprawiono przez ponowne uruchomienie mojego telefonu po usunięciu aplikacji, a następnie przebudowanie go do stanu czystego i ponownego uruchomienia. Teraz działa dobrze.

Dziwne.

CommaToast
źródło
2

Dla mojego problemu nie jest wymagana żadna przebudowa ani ponowna instalacja, aw moim przypadku błąd pojawił się podczas próby uruchomienia aplikacji na telefonie iPhone. Symulator działał dobrze.

Rozwiązanie: Usuń aplikację z telefonu, zrestartuj telefon na zimno i teraz wszystko jest w porządku.

timv
źródło
2

Zdarzyło mi się bardzo z Xcode 4.2.1 na Lionie. Zaktualizowano do 4.3.2 i tak się już nie dzieje. Cieszę się, że to naprawili.

tbag
źródło
2

Mike Ash opublikował rozwiązanie (niech Bóg go błogosławi!), Które nie wymaga ponownego uruchomienia komputera. Po prostu biegnij:

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

Powyższe polecenie wyświetla listę wszystkich uruchomionych zadań, wyszukuje jedno z UIKitApplication w nazwie (które będzie zadaniem odpowiadającym aplikacji, która nieprawidłowo się trzyma), wyodrębnia nazwę i informuje uruchomione, aby pozbyło się tego zadania.

Jano
źródło
Miałem wiele okazji do przetestowania tego (westchnienie). Czasami działa, czasem muszę ponownie uruchomić iPhone'a, a nawet Maca (powyższe polecenie mówi „nie znaleziono procesu”).
Jano
2

Myślę, że jest to spowodowane wymuszonym zamknięciem aplikacji na iPhonie przed naciśnięciem przycisku stop w Xcode. Czasami, gdy naciśniesz przycisk stop w Xcode, zamknięcie aplikacji, jeśli się zawiesiła, zajmuje więcej czasu. Ale bądź cierpliwy, w końcu to się skończy przez większość czasu.

CommaToast
źródło
1

Możesz przydzielić zmienną w funkcji lub zakładce. Spowoduje to zwolnienie, jeśli twoja funkcja lub karta zostaną zamknięte. Musisz więc zadeklarować zmienną składową lub zmienną globalną.

bTagTiger
źródło
1

Ten błąd pojawiał się cały czas, dopóki nie przestałem ufać przyciskowi „Stop” w oknie dialogowym Uruchom. Teraz, gdy zawsze staram się zatrzymać na pasku narzędzi przed próbą uruchomienia, nie spotkałem jeszcze żadnych procesów zombie.

Angela
źródło
0

O mój - próbowałem WSZYSTKIEGO wymienionego powyżej oraz w innych postach. Ponownie zainstalowałem Xcode, uruchomiłem ponownie komputer, skopiowałem wszystkie brakujące pliki do odpowiednich folderów ... W końcu utworzyłem kopię zapasową mojego iPhone'a, wyczyściłem go i przywróciłem, i zadziałało!

Wydaje mi się, że przyczyną może być czytanie i odłączanie mojego iPhone'a na biało, który działał z narzędziami wydajności wykrywającymi wycieki. Lub coś takiego.

Aaaah, wielkie westchnienie ulgi.

Smikey
źródło
0

W najgorszym stanie Zresetuj zawartość i ustawienia iOS Simulater i przez większość czasu w moim przypadku, zamknięcie XCode wraz z symulatorem, zawsze działa dla mnie z XCode4.6 (które często się zawieszają)

rptwsthi
źródło
0

Tego rodzaju problem napotkałem raz w moim przypadku, oto co zrobiłem

  1. Usuń aplikację z symulatora.
  2. Usuń folder danych pochodnych.
  3. Wykonaj czyste działanie w projekcie, wybierając menu produktu - czyste
  4. Zresetuj symulator.
  5. Zamknij Xcode.
  6. Spróbuj uruchomić projekt teraz, jeśli działa dobrze, przejdź do kroku 7
  7. Powtórz wszystkie kroki od 1 do 5, a następnie uruchom ponownie komputer.

W większości przypadków uruchomiłem go w ekstremalnych przypadkach kroku 6 i musiałem ponownie uruchomić komputer.

użytkownik2538944
źródło
0

Ten błąd występował w starszych wersjach symulatora systemu iOS, ponieważ starsze instancje zadania na innym zamykanym urządzeniu mogły kolidować z nową instancją.

iOS 6.0 i nowsze nie powinny mieć takich problemów, ponieważ iOS 6.0 wprowadził użycie podzbiorów bootstrap, a iOS 7.0 wprowadził użycie dedykowanego serwera bootstrap (launchd_sim), który jest całkowicie odizolowany od serwera bootstrap hosta.

Jeremy Huddleston Sequoia
źródło