Question

L'environnement de développement Xcode d'Apple fournit-il des outils pour la détection des fuites de mémoire?

Je suis particulièrement intéressé par les outils qui s'appliquent au SDK pour iPhone. Actuellement, ma plateforme préférée pour les projets de programmation de loisir

Des documentations / tutoriels pour ces outils seraient très utiles.

Était-ce utile?

La solution

Il en existe un spécialement appelé Leaks et, comme l'a dit une précédente affiche, le moyen le plus simple de l'exécuter consiste directement à partir de Xcode:

  
    

run - > Commencez avec l'outil de performance - & Gt; Fuites

  

Cela semble très efficace pour détecter les fuites de mémoire et était facile à comprendre pour un chef non-C comme moi.

Autres conseils

Sélectionnez Profile dans le menu Product de Xcode 6 pour lancer l'outil Instruments d'Apple. (L'application est située dans le contenu du package de l'application Xcode: /Applications/Xcode.app/Contents/Applications/)

Une alternative commerciale est OmniObjectMeter . (Discontinued by Le groupe Omni)

Le Clang Static Analyser est idéal pour rechercher des bogues dans les codes C, C ++ et Objective-C. :

Voici le lien permettant d’utiliser l’instrument de xcode pour détecter les fuites de mémoire / les performances de votre application ios / mac Étapes pour utiliser un instrument à partir de Xcode

Vous pouvez exécuter les outils dans Xcode sur menu -> run -> start with performance tool -> ...

  

L'environnement de développement Xcode d'Apple fournit-il des outils pour la détection des fuites de mémoire?

     

Je suis particulièrement intéressé par les outils qui s'appliquent au SDK pour iPhone.

Oui. Apple les appelle "Instruments". (Il n'y a pas que des outils de mémoire).

Voir le Introduction aux instruments d'Apple Guide de l'utilisateur . En particulier, voir Localisation des problèmes de mémoire dans votre application . Il fournit des exemples d'utilisation des modèles de trace orientés vers la mémoire.

ObjectAlloc et MallocDebug devraient tous deux vous aider. Si vous avez installé le kit de développement logiciel dans son intégralité, ils se trouvent dans Developer- > Applications- > Performance Tools.

Leurs noms vous donnent une bonne idée de leurs fonctions. OA suit les objets créés et MA est un outil de fuite de mémoire général.

Je ne les ai pas encore essayés avec le développement iPhone, mais je dois croire qu'ils fonctionneraient également là-bas.

En supposant que vous soyez inscrit sur le site de développement iPhone d'ADC, voici le lien à suivre: Guide de l'utilisateur Instruments

Lors de l'utilisation de La solution de rustyshelf assurez-vous de tester sur l'iPhone et non sur le simulateur. L'utilisation de la mémoire est radicalement différente.

Résumé des principaux outils de fuite de mémoire: iphone-essential-performance-tools-list

Essayez aussi celui-ci, un simple tutoriel pour commencer avec les insturments Xcode

Outil de fuite de mémoire: http://www.raywenderlich.com/2696/

De base: http://www.raywenderlich.com/ 23037 / comment-utiliser-instruments-in-xcode

 entrer la description de l'image ici

Étape 1. Choisissez l'instrument d'allocations

  1. Choisissez le modèle de profilage pour les allocations:

 entrer la description de l'image ici

  1. Sur l'interface principale d'Instruments, cliquez sur VM Tracker, s'il est présent, puis appuyez sur la touche Suppr, car vous n'aurez plus besoin de cet instrument:

 entrer la description de l'image ici

En cliquant sur le bouton plus en haut à droite, vous pouvez ajouter plus d'instruments pour différents types de tests, mais je ne les couvrirai pas dans ce tutoriel.

Étape 2. Configurez les paramètres de vos instruments

Avant de lancer une analyse, vous devez effectuer certaines tâches. Tout d'abord, vous devez brancher un appareil iOS sur lequel votre application est installée. Il doit s'agir d'un périphérique physique, car le simulateur iOS est toujours un simulateur et peut ne pas représenter avec précision l'utilisation de la mémoire dans votre application ou la manière dont une application peut fonctionner sous une pression de mémoire.

Pour choisir votre cible, cliquez sur Poste de travail près du sommet, passez votre souris sur votre appareil, puis choisissez votre application dans le sous-menu:

 entrer la description de l'image ici

Ensuite, il existe un panneau dans lequel vous pouvez modifier les paramètres pour les types d’allocations que vous souhaitez afficher. En plus de vous assurer que le Créé & amp; La bulle persistante est cochée, vous n'avez pas grand-chose à faire à l'avance.

 entrer la description de l'image ici

Étape 3. Appuyez sur Record pour utiliser l'instrument

.

Une fois que vous avez appuyé sur le bouton Enregistrer en haut à gauche, votre application démarrera sur votre appareil et Instruments commencera à tracer vos allocations. Tout ce que vous avez à faire ici est de parcourir votre application, en vous concentrant sur les problèmes éventuels pour voir si davantage de mémoire allouée que de libérée. Cela peut impliquer de nombreuses tâches répétitives, mais vous vous en remercierez plus tard.

Vous devriez voir quelque chose comme ceci:

 entrer la description de l'image ici

Je vous recommande de parcourir votre application une fois et d'atteindre un point stable en mémoire afin d'obtenir une bonne base de référence qui rendra toute augmentation notable. Lorsque vous êtes convaincu que vous avez suffisamment de données à tester, appuyez sur le bouton d'arrêt en haut à gauche.

Étape 4. Analysez

  1. La première chose à faire est de définir la plage de contrôle pour mesurer le nombre total d'octets persistants au niveau de la ligne de base. Ce numéro d'octet persistant se trouve juste sous le récapitulatif d'allocation.

 entrer la description de l'image ici

Pour définir la plage d'inspection, utilisez le raccourci clavier Commande < pour la plage d'inspection gauche et la Commande > pour la plage d'inspection correcte. Dans notre application, nous avons une base d'environ 20 Mo.

 entrer la description de l'image ici

  1. Ensuite, je déplace ma plage d'inspection droite à un point où j'ai parcouru à nouveau l'application et suis revenu à notre racine. Ici, vous pouvez voir que la mémoire est à peu près la même. En procédant ainsi plusieurs fois et en voyant votre mémoire revenir à notre niveau de référence, vous pouvez supposer qu’il n’ya pas de problème majeur de mémoire.

 entrer la description de l'image ici

Il existe différentes manières d'analyser ces données que je ne couvrirai pas ici, mais sachez qu'il existe tout un menu déroulant vous permettant d'afficher et d'analyser vos données.

 entrer la description de l'image ici

Étape 5. Marquage des générations

Si vous préférez ne pas traiter autant les plages d'inspection, il existe une fonctionnalité appelée Génération de marques. Il y a un bouton pour cela sur le panneau droit des instruments.

 entrer la description de l'image ici

Ce bouton marque les points de la chronologie des instruments en fonction de l'emplacement de la ligne d'inspection. Cela permet de garder une trace de toutes les allocations depuis la marque précédente ou depuis le début s'il n'y a pas d'autres marques. Vous pouvez marquer des générations lorsque vous utilisez l'instrument d'allocation ou après avoir arrêté l'exécution, comme dans cet exemple:

 entrer la description de l'image ici

Étape 6. Vérifiez la trace de la pile

La dernière chose à couvrir concerne la trace de la pile. Pour cela, vous souhaitez définir votre plage de contrôle de manière à mettre en surbrillance toutes les allocations, puis consulter la vue des statistiques en vous assurant que le Créé & amp; Une bulle persistante est sélectionnée dans le panneau de droite. Dans la vue des statistiques, assurez-vous que les octets persistants sont triés du plus élevé au plus bas. Il y a beaucoup d'allocations ici, et il peut être difficile de comprendre ce qui se passe, car beaucoup d'entre elles sont des allocations système.

 entrer la description de l'image ici

Aller en profondeur

  1. Regardez les allocations les plus importantes et cliquez sur la flèche orientée vers la droite. Bien souvent, il y aura des attributions à l'intérieur de celles sur lesquelles vous avez cliqué et beaucoup d'entre elles n'auront aucun sens pour vous.

 entrer la description de l'image ici

  1. Lorsque vous mettez en surbrillance différentes attributions après avoir cliqué sur une flèche, continuez à regarder les détails étendus dans le panneau de droite. Finalement, vous rencontrerez un texte audacieux qui mène au code réel de votre projet, vous expliquant le problème.

 entrer la description de l'image ici

  1. Si vous double-cliquez sur l'un des éléments en gras dans la trace de la pile, vous obtiendrez le code réel (en supposant que vous ayez exécuté des allocations sur une application que vous possédez).

 entrer la description de l'image ici

  1. Il y a beaucoup de choses utiles à propos de cette vue, l'une étant les balises principalement jaunes sur la droite indiquant la quantité de mémoire occupée par chaque appel de méthode. Chaque application étant différente, le développeur doit décider si la méthode en surbrillance est un problème, quelque chose que vous pouvez optimiser, ou tout simplement une partie inévitable de votre application.

  2. Dans mon cas, cette variable UIColor est persistante et utilisée dans notre application. Elle est donc acceptable pendant toute la durée de vie de notre application.

trouvé ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top