web-dev-qa-db-fra.com

Comment activer NSZombie dans Xcode?

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?

295
jason

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:

Screenshot

434
一二三

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
141
Moshe Kravchik

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".

43

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 '. =)

25
Dave DeLong

Produit> Le profil apparaîtra Instruments. Sélectionnez les zombies dans le panneau et devenez fou.

22
garageàtrois

Allez à Produit - Schéma - Schéma d'édition - Arguments - Variables d'environnement set NSZombieEnabled = YES

enter image description here

enter image description here

16
PJR

Dans xcode 4.2

Goto, Product -> edit scheme -> cliquez sur Run yourappname.app -> Diagonostics -> Enable Zombie object.

12
Dax

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/

11
Mark Johnson

À 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.

6
Dov

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.

4
Gani414

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.

3
Ehud B

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.

3
DreamOfMirrors

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

2
user142019

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 ....

2
Rabih harb

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.

1
user2554822