2010-01-23 15 views
1

Dans Xcode, disons que vous écrivez une application pour l'iphone et qu'il y a une erreur d'exécution dedans. Ce que j'ai vu, c'est qu'il ferme juste le programme dans le simulateur mais ne fait pas vraiment de bruit ou ne me donne aucune réaction quant à quelle ligne a causé l'accident ... ai-je raté quelque chose?Comment savoir ce qui a causé une erreur d'exécution sur IPhone App?

Note: Je ne considère pas la console pour être très efficace car juste recrache une erreur, mais je dois encore trouver où en le diable ce bug est liée à la présence dans le code.

Répondre

3

Dans la console, au-dessus de la trace de la pile, il doit indiquer quelque chose comme "[NomClasseurName] sélecteur non reconnu envoyé à l'instance".

Assurez-vous que vous avez vraiment l'intention d'envoyer ce sélecteur à cette classe. Si vous publiez ce que c'est, nous pourrions peut-être vous aider davantage.

Pour accéder à GDB, activez les points d'arrêt, ajoutez-en un à votre code en cliquant sur le numéro de ligne, appuyez sur build et debug et enfin ouvrez le débogueur (CMD + Maj + Y).

+0

omigod, je me sens tellement embarrassé ... Je n'ai même pas vu ça. merci :) – foreyez

+0

Ouais, cela n'aide pas qu'ils vider quelques douzaines de lignes d'inutilité après le peu utile. Cela a-t-il résolu votre problème? –

+0

+1 pour une réponse complète. –

0

Regardez dans la console (command-shift-R).

+0

Je l'ai fait mais c'est très cryptique. Stuff like: Stack: (123123, 234234, 123123, 123123) Je souhaite qu'il me donnerait comme une page et un numéro de ligne à la place ou quelque chose .. ou juste hilight la ligne comme dans le studio visuel. – foreyez

+0

Vous pouvez exécuter votre programme via gdb, ce qui est plutôt interactif. La sortie dans la console ne doit pas être * trop * cryptique. La pile est essentiellement la chaîne de méthodes qui a été appelée menant à la ligne qui a causé le crash. Vous avez seulement besoin de regarder les 3-4 premières lignes de la pile puisque tout est le code d'Apple. –

+0

Peut-être qu'il me manque quelque chose ici. comment puis-je arriver à la pile? Dans la console, j'avais pile suivi de quelques chiffres étranges, mais je suis sûr que vous ne faites pas référence à celui-là. – foreyez

0

Vous pouvez définir un point d'arrêt global sur les exceptions, ce qui vous permettra de tracer le point exact auquel elles se sont produites. Pour ce faire, sélectionnez la commande | Afficher | Option de menu Points d'arrêt dans Xcode pour afficher la boîte de dialogue des points d'arrêt. Sélectionnez Global Breakpoints (pour que ce soit activé pour tous vos projets) et créez un point d'arrêt sur objc_exception_throw dans libobjc.A.dylib.

Maintenant, si vous démarrez votre application en choisissant Exécuter | Débogage - Points d'arrêt Activé ou activé manuellement les points d'arrêt dans la fenêtre du débogueur (Exécuter | Débogueur) avant l'exécution, l'application doit s'arrêter au point où l'exception est levée. Vous pouvez ensuite regarder la trace de la pile dans la fenêtre du débogueur, où elle mettra en surbrillance la ligne particulière à l'origine de l'exception.