Erreur lors du test sur le simulateur iOS: impossible d'enregistrer avec le démarrage du serveur
J'ai été le tester mon application sur le simulateur quand il s'est écrasé en cliquant sur un bouton d'un UIAlertView. J'ai arrêté de débogage, il y, a apporté quelques modifications au code et construit de nouveau l'application. Maintenant, quand je lance l'application, j'obtiens cette erreur dans la console
Impossible d'enregistrer com.myApp.déboguer avec le démarrage du serveur. Erreur: code d'erreur inconnu.
Cela signifie généralement qu'une autre instance de ce processus était déjà en cours d'exécution ou suspendu dans le débogueur.Programme du signal reçu: “SIGABRT”.
J'ai essayé de la suppression de l'application dans le simulateur, de faire une nouvelle version mais j'ai toujours ce message d'erreur lorsque j'essaye d'exécuter l'application.
Que dois-je faire pour être en mesure d'exécuter l'application sur mon simulateur de nouveau?
- Toutes les suggestions sur ce que faire lorsque cela se produit alors que les tests sur l'appareil? J'ai essayé le redémarrage de l'appareil, Xcode.
- J'ai aussi essayé de supprimer l'application sur le périphérique, de quitter toutes les applications actives (double cliquez sur accueil, maintenez le doigt appuyé sur l'icône de l'application, touchez signe" -") le redémarrage de Xcode, l'exploitation forestière et encore. Rien ne fonctionne jusqu'à présent.
- Essayez de "Vider le cache" dans XCode menu. Qui permet aussi bien.
- qu'est-ce que le processus dans le moniteur d'activité?
- Pour tout le monde face à cette problématique, plus tard compris, ce qui arrive la plupart du temps en raison d'un bogue dans le code. Chercher un morceau de code qui soit prend beaucoup de temps d'exécution ou prend de l'application dans une boucle.
- Quand cela arrive, je viens de tuer le SimulatorBridge et de quitter le simulateur.
ps ax | grep SimulatorBridge
Vous devez vous connecter pour publier un commentaire.
Essayer d'arrêter et de redémarrer le simulateur? Si "le pire arrive au pire", vous pouvez toujours essayer de redémarrer: dans mon expérience, cela devrait résoudre le problème.
kill -9
sur le processus bloqué, comme parps ax | grep Simulator
(suggéré ici par BadPirate)statut: ce qui a été vu récemment en Mac OS 10.8 et Xcode 4.4.
tl;dr: Cela peut se produire dans deux contextes: lors de l'exécution sur l'appareil et lors de l'exécution sur le simulateur. Lors de l'exécution sur l'appareil, le débrancher et de rebrancher l'appareil semble arranger les choses.
Mike Cendres suggéré
Cela ne fonctionne pas tout le temps. En fait, il n'a jamais travaillé pour moi, mais il fonctionne bien dans certains cas. Juste ne sais pas quels cas. Alors, il vaut la peine d'essayer.
Sinon, le seul moyen de résoudre ce problème est de redémarrer l'utilisateur launchd. Le redémarrage va le faire, mais il est moins radical/moyen plus rapide. Vous aurez besoin de créer un autre utilisateur admin, mais vous ne devez le faire qu'une fois. Quand les choses coin, déconnectez-vous, comme vous-même, connectez-vous en tant qu'utilisateur, et de tuer les launchd qui appartient à votre utilisateur principal, par exemple,
substituant principal de votre nom d'utilisateur pour
user_id
. De vous connecter à nouveau que votre utilisateur normal, vous reçoit de retour à un état sain. Un peu douloureux, mais moins qu'un redémarrage.détails:
Cela a commencé arrive plus souvent avec Lion/Xcode 4.2. (Personnellement, je n'ai jamais vu avant cette combinaison.)
Le bug semble être dans launchd, qui hérite de l'application de processus comme un enfant lorsque le débogueur s'arrête de débogage sans le tuer. C'est généralement signalée par l'application de devenir un zombie, d'avoir un état de processus de Z dans ps.
Le problème principal semble être dans le bootstrap serveur de nom qui est mis en œuvre dans launchd. Ce (dans la mesure où je comprends bien, les cartes, les id d'application de mach ports. Lorsque le bug est déclenchée, l'application meurt mais ne sont pas nettoyés de l'amorçage du serveur nom du serveur de la carte et, par conséquent, le bootstrap serveur refuse de permettre à une autre instance de l'application pour être enregistrés sous le même nom.
Il a été souhaité (voir les commentaires) que le fait de forcer launchd pour
wait()
pour le zombie allait arranger les choses, mais il ne le fait pas. Ce n'est pas le zombie statut qui est le cœur du problème (c'est pourquoi certains zombies sont bénignes), mais le bootstrap nom de serveur et il n'y a pas moyen de désactiver cette avant de tuer launchd.On dirait que le bug est déclenchée par quelque chose de mauvais entre Xcode, gdb, et l'utilisateur launchd. J'ai juste répété de la cale par l'exécution d'une application dans le simulateur d'iphone, l'avoir arrêté de gdb, et ensuite de faire un build and run à l'ipad simulateur. Il semble être sensible à la commutation des simulateurs (iOS 4.3/iOS 5, l'iPad/iPhone). Ça n'arrive pas tout le temps mais assez souvent quand je suis passer simulateurs beaucoup.
Tuer launchd pendant que vous êtes connecté à vis de votre session. La déconnexion et la reconnexion ne tue pas l'utilisateur launchd; OS X conserve le processus existant autour de. Un redémarrage sera réparer les choses, mais que c'est douloureux. Les instructions ci-dessus sont plus rapides.
J'ai envoyé un bug à Apple, FWIW. rdar://10330930
gdb /sbin/launchd <pid>
) et la force d'un appel à wait() (p (int)wait((int*)0)
, en supposant pid_t est la même chose qu'un int). Notez que vous voulez probablement être connecté en tant qu'un autre utilisateur lorsque vous faites cela de sorte que votre session n'a pas de coin (oups!).man 2 wait
qui dans l'impasse, d'où la recommandation de le faire, car un autre utilisateur.wait
. Peut-êtrewaitpid(-1, (void*)0, 1)
? Auquel cas, depuis que nous devrions connaître le PID du zombie, il pourrait être mis en place de -1.gdb
,wait
, et puis la sortiegdb
. Vous pourriez tout aussi biencontinue
oudetach
de l'intérieurgdb
si vous voulais le garder au cas où il s'est produit de nouveau.gdb launchd 140
causes Terminal pour accrocher après environ 16 secondes (heureusement, c'est recouvrable en tuant Terminal qui provoque gdb à mourir); la solution est par exempleecho 'call (int)waitpid(1945,(void*)0,1)' | gdb launchd 140
, mais je ne suis pas sûr si cela résout le "bootstrap" serveur de problème puisque je ne suis pas l'expérience (j'ai actuellement deux zombies avec parent=launchd qui n'arrête pas de simulateur construit à partir de l'exécution).wait
n'arrange pas les choses. Mise à jour de ma réponse avec des recherches un peu plus, même si le résultat final est le même.launchctl bslist
montre par exempleD com.example.MyApp
,launchctl list
montre par exemple25247 - UIKitApplication:com.example.MyApp[0x957c]
si 25247 est sorti de processus, etlaunchctl list UIKitApplication:com.example.MyApp[0x957c]
ditlaunchctl list returned unknown response
; les lignes du journal inclureBug: launchd_core_logic.c:3760 (25247):0
(et(25247):9
) mais ceux-ci peuvent apparaître sans le coin. J'ai abandonné et mis à jour 10.7.3; ensuite, je vais essayer de frai processus jusqu'à ce que je obtenir un avec la bonne PID et à les pousser launchd, et, à défaut,kill -KILL -1
.Je trouve que j'ai commencé à avoir ce problème avec Lion + Xcode 4.2. J'ai aussi eu le problème dans Xcode 4.3.
J'ai essayé toutes les suggestions, mais aucun d'entre eux ont travaillé d'autres qu'un redémarrage.
Ici est de savoir comment vous déterminer si vous avez besoin d'un redémarrage rapide.
Liste de toutes vos Zombie processus:
Si vous voyez votre application répertoriée comme un Zombie, vous devrez redémarrer votre machine. Le message d'erreur indique "Cela signifie généralement qu'une autre instance de ce processus était déjà en cours d'exécution ou suspendu dans le débogueur". Eh bien, Xcode est la détection de ce Zombie processus de laquelle vous ne pouvez pas les tuer. La seule façon vous pouvez alors fixer c'est avec un redémarrage du système. 🙁
MODIFIER, 20120823: j'ai une meilleure connaissance des processus Zombie donc je voulais mettre à jour cette réponse. Un Zombie processus est créé lorsqu'un processus parent ne prend pas l'appel en attente() (attendre pour le processus de changement d'état) sur une terminaison de processus enfant. Vous ne pouvez pas exécuter "tuer" directement sur un Zombie processus, mais si vous tuez le processus parent, le zombie processus enfant d'être "récolté" et retiré de la table de processus.
Je n'ai pas vu ce problème depuis longtemps, donc n'ai pas inspecté pour voir ce que le processus parent est dans ce scénario. L'alternative à tuer le processus parent est de redémarrer votre système. 🙂
ps -ax
. Ensuite, j'ai fait un plein de déconnexion et d'un identifiant. Toujours pas de dés. Redémarrage fonctionne. Je reçois ce problème de manifester facilement en ayant AppCode et Xcode en découdre pour le contrôle.J'ai juste eu cela m'arrive à moi: j'obtenais l'erreur sur mon appareil et le simulateur a été fonctionne correctement. J'ai fini par avoir à réinitialiser mon appareil et l'erreur a disparu.
Je vais avoir ce problème très souvent récemment. Ce qui permettrait d'éviter que cela se produise? Journalisation et résout le problème mais.. c'est gênant de le faire à chaque tellement souvent.
EDIT:
Je viens de trouver la cause. J'ai eu un bug dans ApplicationWillTerminate méthode. Alors, quand je clique sur le bouton d'arrêt sur la fenêtre de Xcode, l'app ne pouvais pas bien terminer et a commencé à se bloquer.
vérifier le Moniteur d'Activité pour voir si votre application est sur la liste. quitter de force si possible.
Si vous trouvez que votre problème est dû à des processus zombie:
(comme dans le commentaire précédent https://stackoverflow.com/a/8104400/464289) et vous voulez juste pour résoudre le problème immédiatement, vous pouvez le faire sans avoir à redémarrer ou de tuer quoi que ce soit. Il suffit de renommer votre projet cible exécutable:
Facile!
Bien, pas de réponses, mais au moins un test à faire. Ouvrir un Terminal et exécutez cette commande: "ps-Ael | grep Z". Si vous obtenez deux entrées, l'une "(clang)" et de l'autre votre application ou de votre nom de société, vous êtes arrosé - redémarrage.
Si vous êtes un développeur, entrez une courte bug et dites Apple comment absolument ennuyeux d'avoir à redémarrer l'est, et la mention qu'ils peuvent dup ce bug de "rdar://10401934" qui je viens de m'inscrire.
David
Réinitialiser le Simulateur iOS correction de l'erreur pour moi. Bien que cela permettra d'éliminer toutes les Applications que vous avez dans le Simulateur, il résout le problème sans avoir à redémarrer la machine.
Vous pouvez réinitialiser votre Simulateur iOS en procédant comme suit:
1), Passez à le "Simulateur iOS" dans le menu, à côté de la Pomme () logo sur la gauche de votre écran principal.
2) Sélectionnez "Réinitialiser le Contenu et les Paramètres...".
3) Lire le menu message et si vous êtes d'accord, cliquez sur "Réinitialiser" dans le cas contraire, cliquez sur "Ne pas Réinitialiser".
J'ai eu le problème @jyap mentionne avec zombie processus. La seule façon de les éliminer est de redémarrer. Cependant, j'ai remarqué que mes amis qui travaillent sur le même projet serait d'obtenir le même problème mais pourrait tuer le simulateur, sans la création d'un processus zombie. J'ai complètement désinstallé Xcode et ré-installé, et alors que j'ai toujours l'erreur, il ne crée pas de zombie processus, donc je n'ai pas à redémarrer.
Avant je l'ai fait, j'ai été en utilisant ce vraiment laid solution: changer votre ID d'application et d'exécuter à nouveau. Vous vous retrouvez avec l'ordure des copies de l'application dans le simulateur, mais vous pouvez mettre hors tension le redémarrage pendant un certain temps.
Cette erreur se produit beaucoup pour moi, presque à chaque fois que j'essai de l'application dans le Simulateur, m'obligeant à redémarrer.
Voici une solution de contournement si vous voulez obtenir un peu de travail:
YES
.Cela signifie que lorsque vous appuyez sur le bouton accueil dans le simulateur ou de quitter le simulateur, l'application ne parvient pas à accrocher.
N'oubliez pas de modifier ce paramètre de retour avant la distribution! Le mettre sur votre liste de contrôle de la libération 🙂
Si cela se produit lors de l'essai sur l'iPhone. Suffit de redémarrer le téléphone. De ce que j'ai dit que le téléphone ou le simulateur croit encore qu'il existe une instance de l'application en cours d'exécution, donc lors de la dernière exécution, elle n'avait pas résilié faire correctement, soit d'une erreur dans votre code ou le téléphone/simulateur voulais juste avoir un gémissement.
J'ai eu cette erreur lors du débogage de mon appli sur un iPhone 4. Dur de redémarrer l'iPhone a résolu mon problème. (D'éteindre l'iPhone accroché...)
Je n'ai pas de zombie processus sur mon mac et le redémarrage du mac n'a pas de résoudre le problème.
Peut-être que ce bug peut se manifester sur le simulateur et les périphériques réels???
Redémarrage de l'Appareil, a Fonctionné! 😀
Merci à Tous pour les bonnes suggestions.
J'ai juste eu cette erreur. J'ai essayé de redémarrer le simulateur et Xcode mais mon projet ne fonctionne de nouveau après un nettoyage et à construire. Aucune idée de ce qu'il fait.
J'ai eu un appel récursif setter qui soufflait à travers la pile et tué mon application de telle façon que j'avais de pouvoir démarrer mon iPad. Il était prouvable avec une correction dans le code.
J'ai eu le même problème et l'a résolu en faisant ce qui suit
J'ai aussi fait une chose de plus, parce que Xcode est configuré pour utiliser l'iOS 5.0 et mon projet utilise l'iOS 4.3
De cette solution alternative:
Vous perdez toutes les données de l'application telle qu'elle est réellement une nouvelle application qui s'exécute autant que le simulateur d'iPhone est concerné. Cela peut ou peut ne pas être plus ennuyeux que le redémarrage de - voulais juste ajouter à la liste.
La Cause
L'exécution de votre application dans le Simulateur avant précédemment application en cours d'exécution est complètement arrêté.
Le Correctif
Attendez de voir le bouton d'Arrêt d'redevenir actif avant d'exécuter à nouveau.
(Je suis en utilisant Xcode 4.2.1. Ce problème est arrivé très souvent quand j'ai mis à niveau vers OS X Lion).
Fixé par le redémarrage de mon téléphone après la suppression de l'application, puis la reconstruction de la nettoyer et la remettre en marche. Fonctionne très bien maintenant.
Bizarre.
Pas de reconstruire ou de réinstaller le nécessaire pour ma question, et dans mon cas, l'apparition de l'erreur lorsque vous essayez d'exécuter l'application sur l'iPhone. Simulateur a bien fonctionné.
Solution: Supprimer app le téléphone hors tension, effectuez un redémarrage à froid de téléphone, et maintenant tout va bien.
Qui s'est passé pour moi avec Xcode 4.2.1 sur Lion. Mis à jour 4.3.2 et il ne se produit plus. Heureux qu'il fixe.
Mike Cendres posté une solution (dieu le bénisse, lui!) qui ne nécessite pas un redémarrage. Il suffit d'exécuter:
Je pense que cela est causé par la force d'abandon de votre application sur l'iPhone avant d'appuyer sur le bouton d'arrêt dans Xcode. Parfois, lorsque vous appuyez sur le bouton stop dans Xcode, alors il faut plus de temps pour quitter l'application si elle a accroché. Mais juste un peu de patience, il finira par quitter la plupart du temps.
Vous pouvez alloc variable en fonction ou de l'onglet. Il dealloc si votre fonction ou de l'onglet, c'est d'arrêter.
Donc, vous devez declarate il membre de variable ou variable globale.
J'ai été faire cette erreur tout le temps jusqu'à ce que j'ai arrêté de faire confiance le bouton "Stop" dans la boîte de dialogue Exécuter. Maintenant que j'ai toujours cliquer sur "stop" dans la barre d'outils avant d'essayer de l'exécuter, je n'ai pas encore rencontrer de zombie processus.
Oh mon dieu - j'ai essayé TOUT ce qui est inscrit ci-dessus et dans d'autres posts. Ré-installé Xcode, redémarré ma machine, copié tous les fichiers manquants dans les dossiers de droit... Finalement, j'ai sauvegardé mon iphone, l'essuya et restauré, et cela a fonctionné!
Je pense que ce qui peut avoir été la cause de la lecture dans et autour de cette était de débrancher mon iphone blanc, il a été en cours d'exécution avec la performance des outils de capture de fuites. Ou quelque chose de ce genre.
Aaaah, gros soupir de soulagement.
Dans la plupart des pires conditions Réinitialisation du contenu et de définir les de iOS Simulater, et la plupart du temps dans mon cas, arrêter de XCode avec simulateur, toujours le travail qui fonctionne pour moi avec XCode4.6 (qui sont souvent pendu)
J'ai été confronté à ce genre de problème une fois dans mon cas, voici ce que j'ai fait
Dans la plupart des cas, j'ai eu cours d'exécution à l'étape 6 les cas extrêmes, j'ai dû redémarrer ma machine.
Cette erreur se produire dans les anciennes versions du Simulateur iOS car les anciennes instances d'un travail dans un autre dispositif de fermeture pourraient entrer en collision avec la nouvelle instance.
iOS 6.0 et versions ultérieures ne devrait pas rencontrer des problèmes de ce genre car iOS 6.0 introduit l'utilisation de bootstrap sous-ensembles, et iOS 7.0 a introduit l'utilisation de bootstrap serveur (launchd_sim) qui est complètement isolé de l'hôte bootstrap serveur.
Si vous exécutez des tests à partir de la ligne de commande, (à l'aide de
xcodebuild test
), assurez-vous que le simulateur de course correspond à l'appareil que vous attendez pour exécuter les tests sur.Vous pourriez être en cours d'exécution en ligne de commande tests qui utilisent l'iPhone 5. Si vous avez été en cours d'exécution de l'iPhone 6 dans XCode annonce puis exécutez la ligne de commande de tests, parfois, l'iPhone 6 va rester en cours d'exécution et vous avez besoin de sélectionner manuellement l'iPhone 5 appareil, puis exécutez les tests de nouveau.