Comment traquer la cause de SIGABRT

Je montre le code à ce problème à des fins d'exemple, mais vraiment ma question Est: Comment suis-je censé traquer et comprendre les erreurs SIGABRT? J'ai lu cette question: sigabrt sans message d'erreur , mais je ne pense pas que cela concerne mon problème.

L'exemple que je vais montrer ci-dessous n'est évidemment pas un problème xib, et les temps précédents obtenant SIGABRT semblaient plus à voir avec des exceptions non gérées. J'ai essayé d'utiliser bt de GDB mais cela n'aide pas. N'est-il pas un plus vidage complet pour voir? J'ai également utilisé NSZombie, mais je ne comprends vraiment pas comment l'utiliser, donc si c'est votre réponse, veuillez fournir un lien vers la documentation sur la façon dont je suis censé en obtenir des données pertinentes.

Voici mon exemple: j'essaie d'utiliser des données de base. Mon projet n'a pas été configuré à l'origine avec, donc j'ai dû l'ajouter manuellement, ce que j'ai fait en allant dans mon projet>phases de construction>lien binaire avec bibliothèques>en cliquant sur le plus et en ajoutant CoreData.cadre

Alors Je créé mon modèle de données en allant dans Fichier>Nouveau>Modèle de Données. J'ai créé quelques attributs et

Après cela, j'ai ajouté les méthodes appropriées au délégué de l'application (je l'ai fait en créant un nouveau projet avec des données de base, puis en copiant les méthodes):

//code removed, as its not needed for the question/answer

Après cela, j'ai juste essayé d'enregistrer une valeur dans l'objet géré (encore une fois, le code copié de l'implémentation par défaut avec un nouveau projet):

//code removed, as its not needed for the question/answer

Mais tout ce que je reçois quand j'exécute la méthode addTime est le SIGABRT erreur.

erreur xcode

40
demandé sur Community 2011-11-10 01:42:23

1 réponses

SIGABRT se lève lorsqu'un objet reçoit un message non implémenté. Combien d'avertissements n'votre application ont? Essayez de surfer à travers eux et trouver ceux qui vous avertissent "un objet peut ne pas répondre à un sélecteur", si vous nettoyez votre application de tous ces éléments, vous aurez probablement le faire fonctionner correctement.

EDIT: réponse des commentaires ci-dessous qui sont très utiles:

Ok, voici l'artillerie lourde - avez-vous essayé d'utiliser des points d'arrêt? Ouvrir le sixième onglet de votre explorateur de projet, dans le coin inférieur gauche appuyez sur + - >Ajouter un point d'arrêt d'exception - > terminé. Cela ajoutera un gestionnaire d'exception qui arrêtera votre application sur l'appel de méthode même qui se bloque App.

EDIT: à partir de xCode 5.0 > vous n'avez plus besoin de spécifier quelle exception votre point d'arrêt va attraper pendant la création du point d'arrêt. Vous avez juste besoin de frapper + - > Ajouter un point d'arrêt d'exception et vous êtes bon.

entrez la description de l'image ici

72
répondu Eugene 2017-11-08 11:42:23