web-dev-qa-db-fra.com

L'application iOS plante tous les deux lancements, impossible de trouver une erreur

La première fois que je lance l'application, tout semble bien fonctionner. Je vais appuyer sur le bouton d'arrêt, faire un peu de travail et quand je vais le relancer, il semble planter avant même de pouvoir charger quoi que ce soit. Appuyez sur arrêt, appuyez à nouveau sur Exécuter, et cela fonctionne très bien. Jusqu'à ce que je répète le processus.

C'est là que xcode met en évidence 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 n'affiche rien de plus (lldb) (donc je suppose que son arrêt, ne plante pas à ce stade) Donc, quand j'effectue un 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 "nettoyage"
  • J'ai réinitialisé les simulateurs et réinitialisé mon ordinateur
  • J'ai commenté tout le code dans le contrôleur de vue, ça plante toujours
  • J'ai commenté tout le code dans le délégué de l'application, ça plante toujours
  • MAIS .... J'ai exécuté l'application sur un appareil en dehors de Xcode, et cela semble fonctionner parfaitement bien.
  • (MODIFIER) J'ai supprimé/réinstallé xcode et tout le contenu (simulateurs, documents) des différents dossiers de cache (cela empêche xcode de réinstaller automatiquement les anciens après un nouveau téléchargement). Cependant, je ne trouve toujours pas où les outils de ligne de commande sont conservés. Se bloque toujours.

Malgré tout cela, les applications se bloquent toujours à chaque seconde/autre lancement.

Le problème est que je n'ai eu aucun problème jusqu'à la dernière mise à jour de Xcode. Serait-ce un bug Xcode?

(EDIT) Je lance également les dernières versions pour développeurs d'OSX. Cela pourrait-il interférer?

81
Beau Nouvelle

Semble être un combinaison d'OS X 10.8.4 et de LLDB . Comme le dit kenster, le passage à GDB fait disparaître le problème.

Modifier:
Cela est dû à une condition de concurrence critique sur le serveur de débogage (j'entends).

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


Corrigé dans Xcode 4.6.3.

75
nevan king

J'avais aussi ce problème. Jetez un oeil à ce post. l'application Xcode 4.6.2 se bloque à chaque deuxième exécution

Modifiez fondamentalement votre débogueur de LLDB à GDB. Je ne peux pas croire que cela était dû au fait que LLDB était buggé.

11
kenster

Passer à GDB ou redémarrer l'appareil/l'hôte ne résout pas le problème dans mon environnement.

Cependant, la modification de la cible Run dans le schéma XCode associé pour ne plus se lancer automatiquement, mais plutôt pour "Attendre HelloWorld . App pour se lancer" l'a fait.

Le seul inconvénient est que cela implique de démarrer manuellement l'application sur l'appareil. Le débogueur se connecte alors.

2
Mekugi