Comment activer NSZombie dans Xcode?

J’ai une application qui plante sans trace d’erreur. Je peux voir une partie de ce qui se passe si je débogue, mais je n’arrive pas à comprendre quel object est “zombie-ing”.

Est-ce que quelqu’un sait comment activer NSZombie dans Xcode 4?

Les variables d’environnement font désormais partie du “schéma”.

Pour modifier le schéma et activer les zombies:

  • Dans le menu “Produit”, sélectionnez “Modifier le schéma”.

  • Accédez à l’étape “Run Foo.app” dans le panneau de gauche, et l’onglet “Arguments” à droite.

  • Ajoutez NSZombieEnabled à la section “Variables d’environnement” et définissez la valeur sur YES , comme vous pouvez le faire dans Xcode 3.


Dans Xcode 4.1 et versions ultérieures , il existe également une case à cocher dans l’onglet “Diagnostics” de l’étape “Exécuter” pour “Activer les objects Zombie”.


Avec Xcode 6.4:

Capture d'écran

J’ai rencontré le même problème avec le dépannage EXC_BAD_ACCESS et j’ai eu du mal à trouver le paramètre avec Xcode 4.2 (le dernier fourni avec iOS5 SDK). Apple continue à bouger les choses et les parameters ne sont plus là où ils étaient.

Heureusement, je l’ai trouvé et cela fonctionne pour l’appareil, pas seulement pour Simulator. Vous devez ouvrir le menu Produit dans Xcode, sélectionner Modifier le schéma, puis choisir l’onglet Diagnostics. Vous avez là “Enable Zombie Objects”. Une fois sélectionné et exécuté dans le débogueur, vous dirigez vers le double object libéré! Prendre plaisir!

En bref

 Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects 

Produit> Profil lancera des instruments et vous devrez alors créer un “modèle de trace” nommé “Zombies”. Toutefois, ce modèle de trace est uniquement disponible si la destination de génération actuelle est le simulateur – il ne sera pas disponible si la destination est définie sur votre périphérique iOS.

Une autre chose à noter est qu’il n’y a pas d’instrument Zombies dans la bibliothèque d’instruments. Le modèle de trace des zombies consiste en l’instrument Allocations avec le jeu de configuration de lancement “Enable NSZombie detection”.

Il s’agit simplement de définir une variable d’environnement sur votre exécutable (NSZombieEnabled = YES) , puis d’exécuter / déboguer votre application normalement.

Pour plus d’informations, consultez cette page CocoaDev: http://www.cocoadev.com/index.pl?NSZombieEnabled

De plus, ce processus sera beaucoup plus facile avec la sortie de la version 10.6 et les prochaines versions de Xcode et Instruments. Juste dire ‘. =)

Produit> Profil apparaîtra Instruments. Sélectionnez les zombies sur le panneau et devenez fou.

Accéder au produit – Schéma – Schéma d’édition – Arguments – Jeu de variables d’environnement NSZombieEnabled = YES

entrer la description de l'image ici

entrer la description de l'image ici

Dans xcode 4.2

Aller à: Product -> edit scheme -> cliquer Run yourappname.app -> Diagonostics -> Activer l’object Zombie.

Voici une vidéo et une explication comment utiliser Instruments et NSZombie pour trouver et réparer les blocages de mémoire sur iOS: http://www.markj.net/iphone-memory-debug-nszombie/

À partir de Xcode 3.2.5 et de Snow Leopard (Mac OS X 10.6), vous pouvez exécuter votre code via l’instrument Zombies: Run > Run with Performance Tool > Zombies . Cela vous permet de voir des objects particuliers et leur compte de rétention sur une chronologie.

Pour activer la journalisation Zombie, double-cliquez sur l’exécutable du groupe de fichiers exécutables de votre projet Xcode. À ce stade, cliquez sur l’onglet Arguments et dans la section Variables to be set in the environment: créez une variable appelée NSZombieEnabled et définissez sa valeur sur YES .

Dans XCode 4.0: Pour détecter NSZombie dans Instruments, sélectionnez le simulateur comme cible (impossible de détecter NSZomboe sur le périphérique). Exécutez Instruments (CMD + I) et sélectionnez le modèle de trace “Zombies”. Prendre plaisir.

Dans Xcode 4.5.2 goto Product -> Edit Scheme -> et sous l’onglet Diagnostics, cochez la case entre Objective C et Enable Zombie Objects et cliquez sur OK.

Dans les préférences de votre exécutable, ajoutez la variable d’environnement NSZombieEnabled et définissez la valeur sur YES .

dans votre XCODE (4.3) à côté du bouton de lecture 🙂 (exécuter)

select: edit schéma

la fenêtre de gestion du schéma s’ouvrira

cliquez sur l’onglet Arguments

vous devriez voir: 1- Arguments passés sur les variables de lancement 2- environnement

à l’intérieur de la (les variables d’environnement 2-) Nom: NSZombieEnabled
Valeur: OUI

Et c’est fait ….

NSZombieEnabled est utilisé pour le débogage de BAD_ACCESS,

Activez la variable d’environnement NSZombiesEnabled à partir de la feuille de schéma de Xcode.

Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box

Cette vidéo vous aidera à voir ce que j’essaie de dire.