J'ai une application qui plante sans suivi des erreurs. Je peux voir une partie de ce qui se passe si je débogue, mais je ne peux pas déterminer quel objet 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 des zombies:
Dans le menu "Produit", sélectionnez "Modifier le schéma".
Accédez à l'étape "Exécuter 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 supérieur , il y a aussi une case à cocher sur 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'ai eu du mal à trouver le paramètre avec Xcode 4.2 (le dernier qui vient 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 Produit dans le Xcode, sélectionnez Modifier le schéma, puis choisissez l'onglet Diagnostics. Là, vous avez "Activer les objets Zombie". Une fois sélectionné et exécuté dans le débogueur, vous serez dirigé vers l'objet à double libération! Prendre plaisir!
En bref
la source
Produit> Profile lancera Instruments et ensuite vous devriez avoir un "Trace Template" nommé "Zombies". Cependant, ce modèle de trace n'est disponible que si la destination de génération actuelle est le simulateur - il ne sera pas disponible si vous avez défini la destination sur votre appareil 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 se compose en fait de l'instrument d'allocations avec le jeu de configuration de lancement «Activer la détection NSZombie».
la source
Il
(NSZombieEnabled = YES)
suffit de définir une variable d'environnement sur votre exécutable , puis d'exécuter / déboguer votre application normalement.Si vous envoyez un message à un zombie, votre application se bloquera / s'arrêtera sur le débogueur etNSLog
un message pour vous.Pour plus d'informations, consultez cette page CocoaDev: http://www.cocoadev.com/index.pl?NSZombieEnabled
De plus, ce processus deviendra beaucoup plus facile avec la sortie de 10.6 et les prochaines versions de Xcode et Instruments. Je dis juste '. =)
la source
Produit> Le profil fera apparaître Instruments. Sélectionnez des zombies dans le panneau et devenez fou.
la source
Allez dans Produit - Schéma - modifier le schéma - Arguments - Ensemble de variables d'environnement NSZombieEnabled = YES
la source
Dans xcode 4.2
Allez, Produit -> modifier le schéma -> cliquez sur Exécuter votrenomapp.app -> Diagonostics -> Activer l'objet Zombie.
la source
Voici une vidéo et une explication sur la façon d'utiliser Instruments et NSZombie pour trouver et corriger les plantages de mémoire sur iOS: http://www.markj.net/iphone-memory-debug-nszombie/
la source
A partir de Xcode 3.2.5 et Snow Leopard (Mac OS X 10.6), vous pouvez exécuter votre code à travers l'instrument Zombies:
Run > Run with Performance Tool > Zombies
. Cela vous permet de voir des objets particuliers et leur nombre de conserver sur une chronologie.la source
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
la source
Pour activer la journalisation Zombie, double-cliquez sur l'exécutable dans le groupe d'exécutables de votre projet Xcode. À ce stade, cliquez sur l'onglet Arguments et dans la
Variables to be set in the environment:
section, créez une variable appeléeNSZombieEnabled
et définissez sa valeur surYES
.la source
Dans XCode 4.0: Pour détecter NSZombie dans les instruments, sélectionnez le simulateur comme cible (ne peut pas détecter NSZomboe sur l'appareil). Exécutez Instruments (CMD + I) et sélectionnez le modèle de trace "Zombies". Prendre plaisir.
la source
Dans les préférences de votre exécutable, ajoutez la variable d'environnement
NSZombieEnabled
et définissez la valeur surYES
.la source
dans ur XCODE (4.3) à côté du bouton de lecture :) (exécuter)
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 transmis au lancement 2- Variables d'environnement
à l'intérieur de l'emplacement (2 variables d'environnement) Nom: NSZombieEnabled
Valeur: OUI
Et c'est fait ....
la source
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.
la source