81 votes

L'application iOS se bloque tous les deux lancements, erreur introuvable

J'ai été à elle pendant près de 3 heures maintenant, en effectuant des recherches sur cette question, mais n'ai pas trouvé quelque chose qui a aidé à ce jour.

C'est ce qui se passe. Première fois que je lance l'application, tout semble fonctionner correctement. Je vais frapper le bouton d'arrêt, faire un peu de travail et quand je vais pour lancer de nouveau, il semble crash avant même de charger quoi que ce soit. Appuyez sur la touche stop, frappé à Courir de nouveau, et il fonctionne très bien. Jusqu'à ce que je répétez le processus.

C'est là que xcode est à souligner l'erreur avec "Thread 1:signal SIGABRT". Évidemment, rien d'utile ici.

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

La console de débogage ne montre rien de plus (lldb) (Donc je suppose que de son arrêt, de ne pas se planter à ce point) Donc, lorsque j'effectue une BT c'est ce que j'obtiens:

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

Voici ce que j'ai fait jusqu'à présent:

  • Effectué un "Propre"
  • J'ai réinitialisé les simulateurs et de réinitialiser mon ordinateur
  • J'ai commenté tout le code dans la vue-contrôleur, se bloque toujours
  • J'ai commenté le code dans l'application délégué, se bloque toujours
  • J'ai exécutez l'application sur un appareil, et il se bloque toujours (ça ne se fait plus)
  • MAIS....J'ai exécutez l'application sur un appareil en dehors de Xcode, et il semble fonctionne parfaitement bien.
  • (EDIT) j'ai supprimé/réinstaller xcode, et tout le contenu(Simulateurs, Docs) à partir de différents dossiers cache (Cela s'arrête xcode de réinstaller automatiquement les anciens après un nouveau téléchargement). Ne peut toujours pas trouver où les outils de ligne de commande est gardée. Plante toujours.

Malgré tout cela, les applications encore crash à chaque seconde/autre lancement.

C'est que j'ai pas eu de problèmes jusqu'à la plus récente mise à jour de Xcode. Pourrait-il être un Xcode bug?

(EDIT) je suis également équipé de la dernière développeur versions d'OSX. Peut-être interférer?

Merci pour votre temps et toute aide que vous pourriez être en mesure de fournir. J'ai été à ce, pour les âges, et vous voulez juste pour aller au lit.

75voto

nevan king Points 46410

Semble être une combinaison de OS X 10.8.4 et LLDB. Comme kenster dit, le passage à GDB rend le problème.

Edit:
Elle est causée par une condition de concurrence dans le débogage du serveur (j'entends).

Voici un correctif si vous souhaitez continuer à utiliser LLDB: au Lieu de cliquer sur Exécuter, tandis que l'application est déjà en cours d'exécution dans le simulateur, le tuer dans Xcode (⌘-.), dire "j'aime Xcode 5 fois et Exécuter de nouveau (⌘-R). Il ne tombe pas en panne, je l'ai testé.


Fixe dans Xcode 4.6.3.

11voto

kenster Points 1269

J’ai eu ce problème aussi bien. Jetez un oeil à ce post. Xcode 4.6.2 crash lors de l’exécution d’une deuxième fois

Fondamentalement, changer votre débogueur de base à GDB. Je ne peux pas croire que cela était dû à base étant buggé.

2voto

Mekugi Points 11

Commutation à GDB ou redémarrer périphérique/hôte ne résout pas le problème dans mon environnement.

Cependant, modifier la cible Run dans le schéma de XCode associé à ne plus lancer automatiquement, mais plutôt à « Attendre HelloWorld.app lancer » a fait.

Seul inconvénient, c’est que cela implique pour démarrer manuellement l’application sur le périphérique. Le débogueur va alors se connecter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X