Lorsque sur la libération d'un pointeur, vous pouvez voir une erreur commeiPhone - débogage des erreurs « pointeur étant libéré n'a pas été alloué »
« pointeur étant libéré n'a pas été affecté »
Lors du débogage avec le simulateur, je ajouter un argument de construction MallocStackLogging = YES - ceci me permet d'utiliser malloc_history dans le terminal pour localiser où j'ai sur-libéré un pointeur.
Si je débogage sur l'appareil avec cet argument de construction je reçois toutes sortes d'erreurs de la console « ne peut pas créer des fichiers journaux de la pile », etc.
Bizarrement, je reçois des erreurs de pointeur sur libérés apparaissant sur l'appareil, mais pas sur le simulateur.
Quelqu'un a-t-il déjà eu de l'expérience en les dépistant en utilisant l'appareil lui-même?
Merci!
Je n'ai pas pu obtenir avec ces directions exactes (dans Xcode 4.2.1) - j'avais pour parcourir Xcode, puis attacher des instruments pendant qu'il était en cours d'exécution. J'avais "Activer les objets Zombie" activé pour mon schéma actuel, et une fois que j'ai déclenché l'exception, Instruments s'est accroché comme un champion et m'a emmené à l'histoire de l'adresse du zombie. J'ai regardé la trace de la pile pour l'allocation initiale, et j'ai vu une [autorelease] inutile qui provoquait l'exception. Outil génial! – Dov
Le "comment" complet est affiché sur la vidéo WWDC de 2010 appelée "Session 311 - Analyse avancée de la mémoire avec des instruments" à 31:50. – brainray