Created
March 12, 2011 23:55
-
-
Save neror/867716 to your computer and use it in GitHub Desktop.
Trace call stacks of random objc methods
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
neror@neror-laptop:~/Work/Cocoa/DTrace$ ps aux|grep FTAnimationExamples | |
neror 21643 0.0 0.0 2435120 544 s000 S+ 6:21PM 0:00.00 grep FTAnimationExamples | |
neror 21570 0.0 0.3 777004 27784 ?? SX 6:12PM 0:02.81 /Users/neror/Library/Application Support/iPhone Simulator/4.3/Applications/C624085B-7FA1-4860-BE75-EEF244470FBF/FTAnimationExamples.app/FTAnimationExamples | |
neror@neror-laptop:~/Work/Cocoa/DTrace$ sudo ./traceMethodFlow.d -p21570 "FTAnimation*" "-fade*" | |
dtrace: script './traceMethodFlow.d' matched 63636 probes | |
CPU FUNCTION | |
1 -> -fadeAnimationFor:duration:delegate:startSelector:stopSelector:fadeOut: FTAnimationManager | |
1 -> +animationWithKeyPath: CAPropertyAnimation | |
1 -> +alloc NSObject(NSObject) | |
1 -> +allocWithZone: NSObject(NSObject) | |
1 <- +allocWithZone: NSObject(NSObject) | |
1 <- +alloc NSObject(NSObject) | |
1 -> -init NSObject(NSObject) | |
1 <- -init NSObject(NSObject) | |
1 -> -setKeyPath: CAPropertyAnimation | |
1 <- -setKeyPath: CAPropertyAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -respondsToSelector: NSObject(NSObject) | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -respondsToSelector: NSObject(NSObject) | |
1 -> -copy NSObject(NSObject) | |
1 -> -copyWithZone: NSCFString | |
1 <- -copyWithZone: NSCFString | |
1 <- -copy NSObject(NSObject) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- +animationWithKeyPath: CAPropertyAnimation | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 -> +numberWithFloat: NSNumber | |
1 -> +allocWithZone: NSNumber | |
1 <- +allocWithZone: NSNumber | |
1 -> -initWithFloat: NSPlaceholderNumber | |
1 <- -initWithFloat: NSPlaceholderNumber | |
1 <- +numberWithFloat: NSNumber | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 -> -setFromValue: CABasicAnimation | |
1 <- -setFromValue: CABasicAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> +numberWithFloat: NSNumber | |
1 -> +allocWithZone: NSNumber | |
1 <- +allocWithZone: NSNumber | |
1 -> -initWithFloat: NSPlaceholderNumber | |
1 <- -initWithFloat: NSPlaceholderNumber | |
1 <- +numberWithFloat: NSNumber | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 -> -setToValue: CABasicAnimation | |
1 <- -setToValue: CABasicAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> +arrayWithObject: NSArray | |
1 -> +alloc NSObject(NSObject) | |
1 -> +allocWithZone: NSArray | |
1 -> +self NSObject(NSObject) | |
1 <- +self NSObject(NSObject) | |
1 -> +immutablePlaceholder __NSPlaceholderArray | |
1 <- +immutablePlaceholder __NSPlaceholderArray | |
1 <- +allocWithZone: NSArray | |
1 <- +alloc NSObject(NSObject) | |
1 -> -initWithObjects:count: __NSPlaceholderArray | |
1 <- -initWithObjects:count: __NSPlaceholderArray | |
1 -> +__new:: __NSArrayI | |
1 -> -retain NSObject(NSObject) | |
1 <- -retain NSObject(NSObject) | |
1 <- +__new:: __NSArrayI | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 <- +arrayWithObject: NSArray | |
1 -> -animationGroupFor:withView:duration:delegate:startSelector:stopSelector:name:type: FTAnimationManager | |
1 -> +animation CAAnimation | |
1 -> +alloc NSObject(NSObject) | |
1 -> +allocWithZone: NSObject(NSObject) | |
1 <- +allocWithZone: NSObject(NSObject) | |
1 <- +alloc NSObject(NSObject) | |
1 -> -init NSObject(NSObject) | |
1 <- -init NSObject(NSObject) | |
1 <- +animation CAAnimation | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 -> +arrayWithArray: NSArray | |
1 -> +alloc NSObject(NSObject) | |
1 -> +allocWithZone: NSArray | |
1 -> +self NSObject(NSObject) | |
1 <- +self NSObject(NSObject) | |
1 -> +immutablePlaceholder __NSPlaceholderArray | |
1 <- +immutablePlaceholder __NSPlaceholderArray | |
1 <- +allocWithZone: NSArray | |
1 <- +alloc NSObject(NSObject) | |
1 -> -count __NSArrayI | |
1 <- -count __NSArrayI | |
1 -> -initWithArray:range:copyItems: NSArray | |
1 -> -count __NSArrayI | |
1 <- -count __NSArrayI | |
1 -> -getObjects:range: __NSArrayI | |
1 <- -getObjects:range: __NSArrayI | |
1 -> -initWithObjects:count: __NSPlaceholderArray | |
1 <- -initWithObjects:count: __NSPlaceholderArray | |
1 -> +__new:: __NSArrayI | |
1 -> -retain NSObject(NSObject) | |
1 <- -retain NSObject(NSObject) | |
1 <- +__new:: __NSArrayI | |
1 <- -initWithArray:range:copyItems: NSArray | |
1 <- +arrayWithArray: NSArray | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 -> -setAnimations: CAAnimationGroup | |
1 <- -setAnimations: CAAnimationGroup | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -respondsToSelector: NSObject(NSObject) | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -respondsToSelector: NSObject(NSObject) | |
1 -> -copy NSObject(NSObject) | |
1 -> -copyWithZone: __NSArrayI | |
1 <- -copyWithZone: __NSArrayI | |
1 -> -retain NSObject(NSObject) | |
1 <- -retain NSObject(NSObject) | |
1 <- -copy NSObject(NSObject) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -setDelegate: CAAnimation | |
1 <- -setDelegate: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -retain NSObject(NSObject) | |
1 <- -retain NSObject(NSObject) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -setDuration: CAAnimation | |
1 <- -setDuration: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -setRemovedOnCompletion: CAAnimation | |
1 <- -setRemovedOnCompletion: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -isEqualToString: NSCFString | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -isEqualToString: NSCFString | |
1 -> +functionWithName: CAMediaTimingFunction | |
1 -> -isEqualToString: NSCFString | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -isEqualToString: NSCFString | |
1 -> -isEqualToString: NSCFString | |
1 <- -isEqualToString: NSCFString | |
1 <- +functionWithName: CAMediaTimingFunction | |
1 -> -setTimingFunction: CAAnimation | |
1 <- -setTimingFunction: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -retain NSObject(NSObject) | |
1 <- -retain NSObject(NSObject) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -setValue:forKey: CAAnimation | |
1 -> +superclass NSObject(NSObject) | |
1 <- +superclass NSObject(NSObject) | |
1 <- -setValue:forKey: CAAnimation | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 -> -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forUndefinedKey: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -retain NSObject(NSObject) | |
1 <- -retain NSObject(NSObject) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -setValue:forUndefinedKey: CAAnimation | |
1 <- -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forKey: CAAnimation | |
1 -> +superclass NSObject(NSObject) | |
1 <- +superclass NSObject(NSObject) | |
1 <- -setValue:forKey: CAAnimation | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 -> -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forUndefinedKey: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -setValue:forUndefinedKey: CAAnimation | |
1 <- -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> +stringWithUTF8String: NSString | |
1 -> +allocWithZone: NSString | |
1 <- +allocWithZone: NSString | |
1 -> -initWithBytes:length:encoding: NSPlaceholderString | |
1 <- -initWithBytes:length:encoding: NSPlaceholderString | |
1 <- +stringWithUTF8String: NSString | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 -> -setValue:forKey: CAAnimation | |
1 -> +superclass NSObject(NSObject) | |
1 <- +superclass NSObject(NSObject) | |
1 <- -setValue:forKey: CAAnimation | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 -> -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forUndefinedKey: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -setValue:forUndefinedKey: CAAnimation | |
1 <- -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> +stringWithUTF8String: NSString | |
1 -> +allocWithZone: NSString | |
1 <- +allocWithZone: NSString | |
1 -> -initWithBytes:length:encoding: NSPlaceholderString | |
1 <- -initWithBytes:length:encoding: NSPlaceholderString | |
1 <- +stringWithUTF8String: NSString | |
1 -> -autorelease NSObject(NSObject) | |
1 <- -autorelease NSObject(NSObject) | |
1 -> -setValue:forKey: CAAnimation | |
1 -> +superclass NSObject(NSObject) | |
1 <- +superclass NSObject(NSObject) | |
1 <- -setValue:forKey: CAAnimation | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 -> -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forUndefinedKey: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -setValue:forUndefinedKey: CAAnimation | |
1 <- -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forKey: CAAnimation | |
1 -> +superclass NSObject(NSObject) | |
1 <- +superclass NSObject(NSObject) | |
1 <- -setValue:forKey: CAAnimation | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 -> -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forUndefinedKey: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -setValue:forUndefinedKey: CAAnimation | |
1 <- -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forKey: CAAnimation | |
1 -> +superclass NSObject(NSObject) | |
1 <- +superclass NSObject(NSObject) | |
1 <- -setValue:forKey: CAAnimation | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 -> -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 -> -setValue:forUndefinedKey: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -setValue:forUndefinedKey: CAAnimation | |
1 <- -setValue:forKey: NSObject(NSKeyValueCoding) | |
1 <- -animationGroupFor:withView:duration:delegate:startSelector:stopSelector:name:type: FTAnimationManager | |
1 -> +functionWithName: CAMediaTimingFunction | |
1 -> -isEqualToString: NSCFString | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -isEqualToString: NSCFString | |
1 -> -isEqualToString: NSCFString | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -isEqualToString: NSCFString | |
1 -> -isEqualToString: NSCFString | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -isEqualToString: NSCFString | |
1 -> -isEqualToString: NSCFString | |
1 -> -class NSObject(NSObject) | |
1 <- -class NSObject(NSObject) | |
1 <- -isEqualToString: NSCFString | |
1 -> -isEqualToString: NSCFString | |
1 <- -isEqualToString: NSCFString | |
1 <- +functionWithName: CAMediaTimingFunction | |
1 -> -setTimingFunction: CAAnimation | |
1 <- -setTimingFunction: CAAnimation | |
1 -> -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 <- -observationInfo NSObject(NSKeyValueObservingCustomization) | |
1 -> -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -_implicitObservationInfo NSObject(NSKeyValueObservingPrivate) | |
1 <- -willChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 -> -retain NSObject(NSObject) | |
1 <- -retain NSObject(NSObject) | |
1 -> -release NSObject(NSObject) | |
1 <- -release NSObject(NSObject) | |
1 -> -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -didChangeValueForKey: NSObject(NSKeyValueObserverNotification) | |
1 <- -fadeAnimationFor:duration:delegate:startSelector:stopSelector:fadeOut: FTAnimationManager | |
^C |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/sbin/dtrace -Z -s | |
/* | |
* Run like so: | |
* | |
* sudo ./traceMethodFlow.d -o trace.txt -p<PID> "<CLASS PATTERN>" "<METHOD PATTERN>" | |
* | |
* or | |
* | |
* sudo ./traceMethodFlow.d -o trace.txt -c "<PATH TO BINARY>" "<CLASS PATTERN>" "<METHOD PATTERN>" | |
* | |
* <CLASS PATTERN> is a glob that matches a class (or classes) whose methods you | |
* want to trace. | |
* | |
* <METHOD PATTERN> is a glob that matches the methods of the classes matching <CLASS PATTERN> | |
* | |
* Both the class and method patterns can be specified as "*" if you want everything. Be careful, | |
* though. Passing "*" for the class pattern will trace *every* class in the app. | |
* | |
*/ | |
#pragma D option flowindent | |
BEGIN | |
{ | |
self->enabled = 0; | |
} | |
objc$target:$1:$2:entry | |
{ | |
self->enabled = 1; | |
} | |
objc$target:::entry, | |
objc$target:::return | |
/self->enabled == 1/ | |
{ | |
trace(probemod); | |
} | |
objc$target:$1:$2:return | |
{ | |
self->enabled = 0; | |
} | |
END | |
{ | |
self->enabled = 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment