Petit guide de survie sous Xcode. Si vous êtes à la recherche de bugs sans arriver à déterminer le moment précis de l'exécution du programme lors duquel le problème apparaît vous avez besoin de ceci.
  • NSZombieEnabled
  • malloc_error_break
  • objc_exception_throw

NSZombieEnabled

NSZombieEnabled est un paramètre d'environnement détecté à l'exécution du logiciel. Une fois celui-ci lancé, si un objet est désalloué car son compteur de référence a atteint zéro, il n'est pas réellement détruit mais mis à l'état de zombie. A partir de ce moment là, si un autre objet envoie un message à l'objet désalloué, le programme ne plante pas car il existe toujours Mise en place :
  • Project -> Edit Active Executable "xxx"
  • Sélectionner le deuxième onglet contenant le nom du projet
  • Utiliser le bouton + du tableau Variable to be set in the environnemnt
  • Ajouter NSZombieEnabled et mettre cette valeur à YES comme sur la capture suivante.
zombie.png
Il faut évidemment penser à le désactiver lorsqu'il est inutile, c'est à dire en production bien sur, mais aussi si il n'y pas de problème de mémoire à débugger.

malloc_error_break & objc_exception_throw

Ce sont deux points d'arrêt du déboggeur qui permettent respectivement de s'arrêter lors d'une erreur d'allocation mémoire, et lorsqu'une exception qui n'a pas été rattrapée est levée. Pour les mettre en place, il faut passer par le menu Run -> Show -> Breakpoints Une fois la fenêtre ouverte, en double-cliquant sur Double-Click for Symbol on peut ajouter
  • malloc_error_break
  • objc_exception_throw
comme ceci :
breakpoints_good.png