2010-10-03 6 views
3

Je joue avec gdb dans xcode en débuggeant une application iphone.Utilisation de la commande gdb info malloc dans xcode (iphone dev)

Apparemment, je devrait être en mesure d'utiliser la commande suivante:

info malloc <0xaddress> 

voir http://www.friday.com/bbum/2010/01/10/using-malloc-to-debug-memory-misuse-in-cocoa/ et strange GDB error unable to trace

je env vars MallocStackLoggingNoCompact = 1 et NSZombieEnabled = YES ensemble (via l'exécutable dans xcode).

Cependant, je reçois ceci:

2010-10-03 21:29:01.366 memleaktest[10881:307] *** -[one release]: message sent to deallocated instance 0x1646b0 
(gdb) info malloc 0x1646b0 
Undefined info command: "malloc 0x1646b0". Try "help info". 

Qu'est-ce que je manque pour exécuter cette commande? (Xcode 3.2.4 et iPhone SDK 4,1)

Répondre

1
  1. Dans Xcode aller courir -> Activer la Garde Malloc
  2. Set environnement de MallocStackLoggingNoCompact variable OUI (comme vous l'avez déjà fait)

pour vous assurer les journaux sont en cours d'écriture, dans la console de débogage, vous devriez voir ce message:

malloc: stack logs being written into /tmp/stack-logs.xxxx.MyApp.xxxxxx.index 

maintenant, vous devriez être en mesure de:

(gdb) info malloc 0x1646b0 
+0

Malheureusement cela ne fonctionne toujours pas. Quelques petites choses que j'ai remarquées: a) si je tape simplement 'info' je ne vois pas malloc comme sous-commande possible. b) Je reçois memtest (2739) malloc: les journaux de pile sont écrits dans /private/var/mobile/Applications/1F962F35-9C52-4490-9D22-F5D41DC6AB7C/tmp/stack-logs.2739.memtest.index memtest (2739) malloc: Veuillez émettre: cp /private/var/mobile/Applications/1F962F35-9C52-4490-9D22-F5D41DC6AB7C/tmp/stack-logs.2739.memtest.DUY4ZH.link/tmp/qui est un emplacement sur mon iphone, non mon mac – Brynjar

+0

c) l'article original de friday.com mentionne la collecte des ordures que je réalise maintenant, qui est seulement mac - donc cela s'applique-t-il même à l'iphone? – Brynjar

+0

OK. Ce truc fonctionne pour iphone, mais seulement en utilisant le simulateur. Essayez de déboguer sur l'appareil et vous obtenez l'étrangeté dans mes commentaires précédents. J'ai trouvé que tu n'avais pas besoin de garde malloc. Merci pour l'aide en tout cas. – Brynjar

3

Il s'avère que vous pouvez seulement info malloc lors du débogage dans le simulateur - pas sur l'appareil.

0

Expérimentez le même problème difficile, toute méthode réalisable trouvé? Difficile cet accident se produit uniquement dans un appareil non simulateur.