Ajouter une symbolique point d'arrêt sur un sélecteur dans Xcode
Il y a un bug dans mon application qui montre de la façon suivante (partielle) stacktrace:
2011-11-25 01:55:59.760 Events2[6650:403] -[Event boolValue]: unrecognized selector sent to instance 0x7fb903928670
Pour déboguer ce que je décide d'ajouter une symbolique point d'arrêt sur[Événement boolValue] raisonnement que lorsque ce sélecteur est envoyé, le débogueur s'arrête.
Cependant, rien ne se passe. Après le réglage du point d'arrêt, l'application des soldats et génère la même exception sans arrêt.
J'ai défini le point d'arrêt comme suit:
Je suis en utilisant le LLDB débogueur avec Xcode 4.2
Vous devez vous connecter pour publier un commentaire.
Fixer un point d'arrêt sur un sélecteur de causes lldb d'arrêter lorsque ce sélecteur est exécuté, non pas lorsqu'il est envoyé. Dans votre cas, il n'y a pas de sélecteur "-[Événement boolValue]", donc de ce point d'arrêt ne sera jamais frappé.
Je voudrais définir une exception de point d'arrêt sur "Tous Objective-C Exceptions". Ce sera atteint lorsque le "non reconnu sélecteur envoyé" exception est levée, et vous pouvez voir où le problème se produit.
Je cherchais la même réponse (symbolique des points d'arrêt) et ce lien m'a aidé:
http://www.cocoabuilder.com/archive/cocoa/308967-symbolic-breakpoints.html#308970
Vous avez à suivre ce modèle (il est également donnée comme un espace réservé dans Xcode point d'arrêt de l'éditeur):
Par exemple, je cherchais à voir qui fait mis ma barre de gauche de l'élément et remplace mes paramètres, j'ai utilisé
-[UINavigationItem setLeftBarButtonItem:]
et cela a fonctionné. Ou cette un
-[UINavigationController pushViewController:animated:]
Je mettrais une Symbolique point d'arrêt avec ce symbole
-[NSObject doesNotRecognizeSelector:]
qui va nous aider à saisir les situations où un sélecteur est invoquée contre le mauvais objet.
Il me semble symbolique des points d'arrêt ne fonctionnent pas bien dans LLDB (je suis en cours d'exécution la plus récente version de Xcode de cette écriture, 4.3.3).
J'ai mis une symbolique point d'arrêt à la addAnimation:forKey: dans LLDB, et il n'est jamais touché. Si je passe mon projet de GDB, le point d'arrêt fonctionne comme prévu.
Meilleure façon de trouver des méconnue sélecteur d'appel est de créer ce sélecteur (catégorie) et de mettre un point de rupture en elle.