Question

Je suis en train de déboguer un programme écrit pour iPhone OS 2.2.1 et qui doit être légèrement réécrit pour la version 3.0. Avoir une liste de tous les appels de messages Objective-C en cours, y compris les "dans les coulisses" appels, serait très utile.

J'ai trouvé NSObjCMessageLoggingEnabled sur un site Web, mais je ne suis pas sûr que cela fonctionne avec l'iPhone. Est-ce que quelqu'un sait si / comment cela fonctionne, et si non, s'il existe un autre moyen de réaliser la même chose?

Merci!

Était-ce utile?

La solution

J'ai finalement trouvé un moyen relativement simple (mais pas du tout élégant) de le faire.

Lors du débogage sur l'iPhone, j'ai configuré un point d'arrêt pour objc_msgSend. J'ai ensuite saisi ce script GDB simple:

while 1
printf "[%s %s]", (char *)object_getClassName($r0), (char *) $r1 
c
end

Ceci imprime chaque appel de méthode. Ce n’est pas parfait, car il affiche le nom de classe de l’objet auquel le message est envoyé, et non l’objet lui-même, mais cela fonctionne pour ce dont j’avais besoin.

Notez que cela ne fonctionnera que sur l'iPhone lui-même.

Autres conseils

NSObjCMessageLoggingEnabled (et son jumeau instrumentObjcMessageSends (BOOL) ) sont disponibles dans le simulateur, mais pas sur le périphérique.

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