Console Debugger
Thomas =)
Membre
Bonjour,
Etant débutant sur Xcode, ma question vous paraà®tra surement stupide mais en développant mon application, je me heurte a une erreur :
Cependant, ayant des 10aines de classes dans mon projet, je voulais savoir s'il y avait moyen de connaitre le numéro de ligne et la classe ayant provoqué cette erreur, comme dans la console d'Eclipse par ex.
Sinon je vais devoir mettre des BreakPoint partout et avancer Pas a pas /wacko.png' class='bbc_emoticon' alt=' ' />
Etant débutant sur Xcode, ma question vous paraà®tra surement stupide mais en développant mon application, je me heurte a une erreur :
Cependant, ayant des 10aines de classes dans mon projet, je voulais savoir s'il y avait moyen de connaitre le numéro de ligne et la classe ayant provoqué cette erreur, comme dans la console d'Eclipse par ex.
Sinon je vais devoir mettre des BreakPoint partout et avancer Pas a pas /wacko.png' class='bbc_emoticon' alt=' ' />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ensuite, tu n'as plus qu'à mettre un point d'arrêt dans la méthode pour voir qui appelle. Comme tout objet hérite de NSObject, l'appel de -name sur NSString mènera à cette méthode de debug.
Un conseil: commence quand même par lancer une analyse statique de ton code (Product > Analyze) et un petit coup d'Instruments/Zombies. 90% du temps, c'est une erreur de gestion mémoire.
Alors normalement après ce message, tu as la "Call stack at first throw", avec donc la pile d'appels. Tu peux donc savoir dans quel fichier ça a planté et à quelle ligne.
Tu peux aussi mettre un "Exception Breakpoint" pour que ton programme s'arrête (breakpoint) juste avant le throw. Pour cela dans Xcode4 c'est très simple : dans le panneau de breakpoints (menu View > Navigators > Show Breakpoint Navigator) tout en bas de la liste des breakpoints existants (s'il y en a) tu cliques sur le bouton "+" et tu choisis "Add Exception Breakpoint". Ca va te permettre d'ajouter un breakpoint non pas sur une ligne donnée, mais juste avant que l'exception soit "throw".
C'est cette pile d'appel qui me permet d'identifier d'ou part l'erreur c'est ça ?
Cependant, le 474 ne corresponds pas a la ligne puisque cette ligne ne correspond a rien
Ben écoute, je ne sais pas, c'est peut-être un exemple simple pour lequel ça fonctionne? Mais je suis sûr de ce que j'avance, parce que sinon, je me m'amuserais pas à créer une catégorie /crybaby.gif' class='bbc_emoticon' alt=' ' />
J'ai été obligé de le faire encore récemment avec un stagiaire.
Je m'en sert tout le temps... Et au pire si tu break dans un framework tu as toujours ta trace d'accessible pour remonter les séquences. L'avantage par rapport à la simple trace écrite c'est que ton contexte mémoire est dispo pour voir ce qu'il s'est passé.
Jamais eu besoin de créer une catégorie sur NSObject pour ça jusque là .
Comme je disais, si tu break dans un framework, tu as la trace pour remonter et avoir accès aux objets avec un peu de chance.
Avec un peu de chance, oui.
Il s'arrête régulièrement avec juste du code assembleur et quand je continue, ça continue normalement...
Ca m'inquiète ce truc... J'ai raison de m'inquiéter ? /smile.png' class='bbc_emoticon' alt=':)' />
Du coup ça se passe ptet une librairie ou un framework. D'où le code assembleur.
Après, je dis peut etre une connerie. /biggrin.png' class='bbc_emoticon' alt=':D' />