Exceptions dans Xcode 4.5

Salut,



Mes exceptions ne s'affichent plus dans Xcode 4.5.



Cas typique: aller chercher l'item 0 d'un array vide. Je me retrouve direct dans l'hexadecimal après le plantage.





Je suppose que j'ai un tag à  changer dans mes build settings, mais où ?

Réponses

  • AliGatorAliGator Membre, Modérateur
    Et si tu rajoutes un Exception Breakpoint ? (J'en ai toujours un, partagé dans ma session donc présent dans tous mes projets Xcode que j'ouvre automatiquement)
  • muqaddarmuqaddar Administrateur
    'AliGator' a écrit:


    Et si tu rajoutes un Exception Breakpoint ? (J'en ai toujours un, partagé dans ma session donc présent dans tous mes projets Xcode que j'ouvre automatiquement)




    C'est déjà  mieux, ça m'amène bien à  la ligne qui contient le bug, mais j'aimerais savoir pourquoi mon exception ne s'affiche plus dans la console.
  • AliGatorAliGator Membre, Modérateur
    C'est un bug dont j'ai déjà  entendu parler pour Xcode 4.5
  • muqaddarmuqaddar Administrateur
    OK. Merci pour cette astuce en tout cas.
  • Oh, ajouter un exception breakpoint?!



    Cela me semble vraiment interessant! Je ne connaissait pas.

    Sa permet de avoir un Break des que une exeption est générée?



    Que veux tu dire par " (J'en ai toujours un, partagé dans ma session donc présent dans tous mes projets Xcode que j'ouvre automatiquement) "



    Désolé pour la question novice, mais cela semble vraiment pertinent!
  • 'FrancoisH' a écrit:


    Oh, ajouter un exception breakpoint?!



    Cela me semble vraiment interessant! Je ne connaissait pas.

    Sa permet de avoir un Break des que une exeption est générée?



    Que veux tu dire par " (J'en ai toujours un, partagé dans ma session donc présent dans tous mes projets Xcode que j'ouvre automatiquement) "



    Désolé pour la question novice, mais cela semble vraiment pertinent!




    +1
  • AliGatorAliGator Membre, Modérateur
    1) Pour créer un Exception Breakpoint :
    • Dans le Breakpoint Navigator (= dans le panneau de gauche dans Xcode4, dans l'onglet qui affiche les breakpoints, accessible par Commande-6), cliquer tout en bas sur le bouton "+" et choisir "Add Exception Breakpoint...". Et c'est tout.


    Si vous avez laissé les réglages par défaut (en particulier "On Throw" et non "On Catch", le code va s'arrêter juste avant que l'exception soit levée (on throw), ce qui permet en plus de garder le contexte d'exécution et de savoir exactement à  quelle ligne l'exception à  eu lieu (plutôt que de se retrouver comme parfois dans le main à  la fin de l'exception car le code a été levé à  la RunLoop ou des choses comme ça)



    Bien sûr, comme pour tout breakpoint, vous pouvez rajouter des actions (jouer un son, faire prononcer du texte par votre Mac genre "Attention chérie, ça va couper !" image/biggrin.png' class='bbc_emoticon' alt=':D' /> ou autre).





    2) Pour faire en sorte que le Breakpoint ne soit pas attaché uniquement au projet courant, mais soit partagé par tous vos projets Xcode de votre session utilisateur quels qu'ils soient, faire un clic droit sur le Breakpoint dans la liste et choisir "Move Breakpoint To" -> "User"
  • muqaddarmuqaddar Administrateur
    'AliGator' a écrit:


    2) Pour faire en sorte que le Breakpoint ne soit pas attaché uniquement au projet courant, mais soit partagé par tous vos projets Xcode de votre session utilisateur quels qu'ils soient, faire un clic droit sur le Breakpoint dans la liste et choisir "Move Breakpoint To" -> "User"




    Super ! image/thumbsup.gif' class='bbc_emoticon' alt='' />
  • 'AliGator' a écrit:


    2) Pour faire en sorte que le Breakpoint ne soit pas attaché uniquement au projet courant, mais soit partagé par tous vos projets Xcode de votre session utilisateur quels qu'ils soient, faire un clic droit sur le Breakpoint dans la liste et choisir "Move Breakpoint To" -> "User"




    bien vu !
  • Alors la merci beaucoup pour l'astuce ça faisait longtemps que je cherchais comment faire ça j'en étais venu a compiler sur le simulateur en 4.3 car il marquait encore les exceptions image/smile.png' class='bbc_emoticon' alt=':)' />.
  • 'devulder' a écrit:


    Une astuce http://www.fruitstan...nt-to-instance/ pour les unrecognized selector




    Et merci à  toi pour cette astuce image/smile.png' class='bbc_emoticon' alt=':)' />
  • AliGatorAliGator Membre, Modérateur
    Si vous n'êtes pas habitués à  les utiliser, sachez que les breakpoints sous Xcode4, c'est quand même super puissant.



    On peut mettre des breakpoints sur des lignes bien sûr, ça tout le monde le sait, mais aussi sur des symboles, sur des exceptions, mettre des conditions sur ces breakpoints, et faire diverses actions lorsque le breakpoint est "hit", à  savoir pas forcément arrêter l'exécution du code, mais faire d'autres choses, comme :
    • afficher du texte dans la console (plutôt que de modifier le code pour rajouter un NSLog pour débuguer : pas besoin de quitter l'application recompiler et relancer l'appli comme on a à  le faire si on veut rajouter un NSLog !)
    • jouer un son quand le breakpoint est rencontré. Très pratique pour mettre des breakpoints juste pour savoir *quand* une méthode est appelée ou quand on passe dans une certaine branche du code, sans pour autant interrompre notre test de l'application en live en interrompant l'exécution comme avec un breakpoint "classique" ni sans avoir à  surveiller la console sans arrêt
    • Sur le même principe, demander à  Xcode de prononcer un texte (plutôt que jouer un son ou de simplement écrire ce texte sur la console). Ce texte pouvant bien entendu contenir des valeurs issues de variables
    • exécuter un AppleScript
    • exécuter une commande du débugueur


    Etc, etc. (cf la doc pour plus d'infos, comme toujours)
  • Dans le même genre (pas complètement hors sujet quoi).



    J'ai découvert récemment qu'on pouvait déplacer le point d'exécution dans le code.

    C'est-à -dire suite à  un arrêt sur un breakpoint, on peut déplacer le petit curseur vert qui indique la prochaine ligne qui sera exécutée. On peut donc sauter des lignes ou revenir en arrière. Bien sûr ça peut "faire n'importe quoi" mais cela peut-être utile pour comprendre ce qui se passe dans une fonction sans avoir à  relancer l'exécution depuis le début.



    J'ai toujours cru que cette fonction n'existait pas sur Xcode puisqu'il n'y a aucun menu qui s'y rapporte.
Connectez-vous ou Inscrivez-vous pour répondre.