J'ai une application qui se bloque sans suivi d'erreur. Je peux voir une partie de ce qui se passe si je débogue, mais je ne peux pas savoir quel objet est "zombie-ing".
Est-ce que quelqu'un sait comment activer NSZombie dans Xcode 4?
Les variables d'environnement font maintenant partie du "schéma".
Pour éditer le schéma et activer les zombies:
Dans le menu "Produit", sélectionnez "Editer 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 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 objets zombies".
Avec Xcode 6.4:
J'ai rencontré le même problème avec le dépannage de EXC_BAD_ACCESS et j'avais du mal à trouver le paramètre avec Xcode 4.2 (le dernier fourni avec le SDK iOS5). Apple continue de déplacer les choses et les paramètres 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 Product dans Xcode, sélectionner Edit Scheme, puis choisir l'onglet Diagnostics. Là vous avez "Activer les objets Zombie". Une fois sélectionné et exécuté dans le débogueur, il vous dirigera vers l'objet à double libération! Prendre plaisir!
En bref
Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects
Produit> Profil lancera Instruments et il devrait alors y avoir un "Modèle de trace" nommé "Zombies". Toutefois, ce modèle de trace n'est disponible que si la destination de construction actuelle est le simulateur. Il ne le sera pas si la destination est définie sur votre appareil iOS.
Une autre chose à noter est qu’il n’ya pas d’instrument Zombies dans la bibliothèque d’instruments. Le modèle de trace de zombies est constitué de l'instrument Allocations et du 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. Si vous envoyez un message à un zombie, votre application se bloquera/se brisera au débogueur et NSLog
un message. pour vous.
Pour plus d'informations, consultez cette page CocoaDev: http://www.cocoadev.com/index.pl?NSZombieEnabled
En outre, ce processus deviendra beaucoup plus facile avec la publication de la version 10.6 et des prochaines versions de Xcode et d’Instruments. Je dis juste '. =)
Produit> Le profil apparaîtra Instruments. Sélectionnez les zombies dans le panneau et devenez fou.
Allez à Produit - Schéma - Schéma d'édition - Arguments - Variables d'environnement set NSZombieEnabled = YES
Dans xcode 4.2
Goto, Product -> edit scheme -> cliquez sur Run yourappname.app -> Diagonostics -> Enable Zombie object.
Voici une vidéo et une explication sur la façon d'utiliser Instruments et NSZombie pour rechercher et réparer les pannes 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 objets particuliers et leur nombre de retenues sur une timeline.
Dans Xcode 4.5.2, accédez à Product -> Edit Scheme -> et sous l'onglet Diagnostics, cochez la case entre Objective C et Enable Zombie Objects et cliquez sur OK.
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.
Pour activer la journalisation Zombie, double-cliquez sur le fichier exécutable dans le groupe de fichiers exécutables de votre projet Xcode. A 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 les préférences de votre exécutable, ajoutez la variable d'environnement NSZombieEnabled
et définissez-la sur YES
.
dans votre XCODE (4.3) à côté du bouton de lecture :) (run)
sélectionner: modifier le schéma
la fenêtre de gestion du schéma s'ouvrira
cliquez sur l'onglet Arguments
vous devriez voir: 1- Arguments passés au lancement 2- Variables d'environnement
à l'intérieur de la place (2 variables d'environnement) Nom: NSZombieEnabled
Valeur: OUI
Et c'est fait ....
NSZombieEnabled est utilisé pour le débogage de BAD_ACCESS,
activer la variable d’environnement NSZombiesEnabled à partir de la feuille de schémas 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.