iOS libsystem_c.dylib strdup fuite de mémoire NSZombie ne fonctionne pas
Merci de m'aider à traquer un iOS fuite de mémoire. Merci!
Je suis en utilisant xCode 4.0.1 et j'ai essayé d'activer NSZombie pour suivre une fuite de mémoire, mais il ne semble pas à fonctionner comme avant, avec xCode 3.x
Je ne peux pas trouver où la fuite de mémoire, comme des Instruments de points:
Objet de fuite -> GeneralBlock-32
Adresse -> 0x4c8600
Taille -> 32 Octets
Responsable de la Bibliothèque -> libsystem_c.dylib
Responsable de Trame/de l'Appelant -> strup
À ce point, je ne sais pas Si je suis en utilisant Instruments avec NSZombie de la bonne façon avec xCode 4, car il ne montre pas la NSZombie option lorsque je clique sur "i" pour plus d'informations, en vertu de l'option gauche Fuites.
OBSERVATION: Mon application iPhone joue un live stream mms/wma et aussi wma ءudio fichiers avec une quantité limitée de temps. La fuite se produit seulement avec une durée de fichier wma, mais fonctionne parfaitement quand je suis en train de jouer à partir d'une diffusion en continu de la source, pas d'heure de fin.
OriginalL'auteur Winston | 2011-05-05
Vous devez vous connecter pour publier un commentaire.
D'abord, c'est un
malloc
bloc, pas un objet. Les Zombies ne fonctionne pas (et n'aurait jamais travaillé dans les versions antérieures).Combien de fois que la fuite se produit? Une fois que? Ne vous inquiétez pas à ce sujet. Une fois par flux? fichier un bug -- qui n'est pas dans votre code à partir de ce que vous avez publié à ce jour (à moins que votre code est l'appel de
strdup
, ce qui est certainement possible, mais atypique dans la plupart des applications iOS qui ne sont pas une utilisation intensive de bibliothèques tierces... et vous?)Dans tous les cas, sauf si c'est une fuite 100s et 100s de 32 octets allocations à travers l'exécution de votre application, ne vous inquiétez pas à ce sujet (mais s'il vous plaît soumettre un rapport de bogue).
Comme Valkio dit, vous pouvez saisir la trace de la pile de l'allocation de gdb (ou Instruments) directement.
Un rapport de bug ne sera probablement pas vous faire beaucoup de bien si c'est dans une librairie tierce. Sonne comme une fuite dans la bibliothèque. L'accident est probablement orthogonale (bien qu'il pourrait se résument à un problème de gestion de mémoire dans la bibliothèque) et digne d'une question différente.
OriginalL'auteur bbum
Vous pouvez voir où il a été alloué si vous faites cela:
(Déboguer) -> Arguments.
Vous avez raison. Je suis de plus en plus utilisé pour gdb.
Merci pour votre réponse, vakio. J'ai fait comme tu m'a demandé et (gdb) quand j'ai tapé info malloc 0x464890, il m'a donné ce résultat: MyAppName (330) > Qu'est-ce 330 signifie?
Hm c'est pas bon. Vous devriez obtenir un malloc de la pile. Peut-être que les instruments fonctionnent mieux dans ce cas...
Quelqu'un a-t-il résoudre ce problème avec un peu de malloc des fuites? Je vais avoir maintenant, et lorsque ces erreurs accumuler ils plantage de mon application...
OriginalL'auteur vakio