Tracer les messages en Objective-C

Si vous avez besoin des fois ( a des fins de debugging par exemple) de savoir quels sont les messages envoyés par vos objets et dans quels ordre tourner vous alors vers : instrumentObjcMessageSends, cette fonction permet de tracer les messages echangés le resultat de ce tracage est generé apres l’execution du programme dans /tmp/msgSends-<PID de votre programme>


Voici un exemple de l’utilisation de cette fonction :

#import <Foundation/Foundation.h>

int main (int argc, char **argv) {
 /* Begin Tracing ObjC Messages */
 instrumentObjcMessageSends(YES);

 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

 NSLog(@"Hello, lostinmac.com!");

 [pool drain];

 instrumentObjcMessageSends(NO);
 /* End of Tracing */

 return 0;
}
après la compilation et l’exécution de ce code  :
MyMac:Desktop Tarek$ gcc -framework Foundation tracingObjcMessages.m -o tracingObjcMessages
MyMac:Desktop Tarek$ ./tracingObjcMessages
2011-03-01 21:28:14.989 tracingObjcMessages[8496:903] Hello, lostinmac.com!
Un fichier de trace est alors généré (msgSends-8496 par exemple ) et dans lequel on trouve tous les messages envoyés:
+ NSAutoreleasePool NSObject initialize
+ NSAutoreleasePool NSObject alloc
+ NSObject NSObject allocWithZone:
- NSAutoreleasePool NSAutoreleasePool init
+ NSTimeZone NSObject initialize
+ NSTimeZone NSTimeZone defaultTimeZone
+ NSTimeZone NSTimeZone systemTimeZone
+ NSTimeZone NSTimeZone timeZoneWithName:
+ __NSPlaceholderTimeZone __NSPlaceholderTimeZone initialize
+ __NSPlaceholderTimeZone NSObject alloc
+ __NSPlaceholderTimeZone NSTimeZone allocWithZone:
+ NSObject NSObject allocWithZone:
+ __NSPlaceholderTimeZone __NSPlaceholderTimeZone immutablePlaceholder
- __NSPlaceholderTimeZone __NSPlaceholderTimeZone initWithName:
- __NSPlaceholderTimeZone __NSPlaceholderTimeZone __initWithName:cache:
+ __NSCFTimeZone __NSCFTimeZone initialize
+ NSCache NSObject initialize
+ NSCache NSObject new
- NSCache NSCache init
- NSCache NSCache setName:
+ __NSCFTimeZone __NSCFTimeZone __new:cache:
- NSCache NSCache evictsObjectsWithDiscardedContent
- NSCache NSCache setObject:forKey:
- NSCache NSCache setObject:forKey:cost:
- __NSCFTimeZone NSObject retain
- __NSCFTimeZone NSObject retain
- __NSCFTimeZone NSObject release
- __NSCFTimeZone __NSCFTimeZone name
+ __NSPlaceholderDate __NSPlaceholderDate immutablePlaceholder
- __NSPlaceholderDate __NSPlaceholderDate initWithTimeIntervalSinceReferenceDate:
+ __NSCFDate __NSCFDate __new:
+ NSTimeZone NSTimeZone systemTimeZone
- __NSCFTimeZone NSObject retain
- __NSCFTimeZone NSObject release
- __NSCFTimeZone NSObject release
- __NSCFDate NSObject release
- __NSCFDate __NSCFDate dealloc
- NSDate NSObject dealloc
- NSAutoreleasePool NSAutoreleasePool drain
Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s