2010-05-06 4 views
5

J'ai écrit une macro de débogage qui imprime à la console la chaîne transmise à chaque fois que le drapeau kDebug global == YES.Appeler une macro à chaque fois qu'une méthode est appelée - Objectif C

Je dois imprimer le nom d'une méthode et son nom de classe à chaque fois qu'une méthode est appelée.

Cela fonctionne très bien quand je vais à travers laborieusement chaque méthode et d'écrire le nom de la classe et la méthode dans une chaîne.

Y at-il un gestionnaire spécial qui est appelé quand une méthode dans Objective-C est appelée, et si oui, y a-t-il un moyen que je puisse en quelque sorte surcharger pour appeler ma macro de débogage?

Le but entier de cela est que je n'ai pas à passer par toutes les méthodes dans mon code et le code à la main la signature de méthode dans l'appel de macro de débogage.

Répondre

6

Si vous êtes à la recherche d'une installation d'exploitation forestière de la méthode, plutôt que de construire votre propre, on est en fait construit dans l'exécution Objective-C.

Vous pouvez lire sur la section Objective-C de Technote d'Apple 2124: Technical Note TN2124: Mac OS X Debugging Magic

Je recommande également la lecture sur l'affichage de blog de Dave Dribin sur l'utilisation de l'installation de l'exécution des messages de traçage. Vous pouvez le trouver ici: Tracing Objective-C messages - Dave Dribin's Blog. Dave note une fonction logObjCMessageSend appelée, que vous pouvez utiliser pour personnaliser votre comportement de journalisation. C'est un peu difficile à utiliser, mais Dave donne les informations nécessaires pour l'utiliser avec succès.

+0

pouvez-vous expliquer avec le code simple? – Shamsiddin

4

Jetez un oeil à Dtrace. Instruments fournit une interface graphique. Vous pouvez, par exemple, fournir une regex pour correspondre à toutes les méthodes que vous souhaitez enregistrer.

0

sonne comme vous recherchez la macro __PRETTY_FUNCTION__ ... mais la réponse acceptée est probablement une meilleure façon d'aller.

Questions connexes