--- a/MessageTracer.st Thu Oct 17 14:00:28 1996 +0200
+++ b/MessageTracer.st Tue Oct 22 19:57:06 1996 +0200
@@ -13,13 +13,13 @@
Object subclass:#MessageTracer
instanceVariableNames:'traceDetail'
classVariableNames:'BreakpointSignal CallingLevel BreakBlock TraceSenderBlock
- LeaveBlock MethodCounts MethodMemoryUsage MethodTiming
- TraceFullBlock'
+ LeaveBreakBlock LeaveTraceBlock MethodCounts MethodMemoryUsage
+ MethodTiming TraceFullBlock'
poolDictionaries:''
category:'System-Debugging-Support'
!
-!MessageTracer class methodsFor:'documentation'!
+!MessageTracer class methodsFor:'documentation'!
copyright
"
@@ -191,18 +191,19 @@
"
! !
-!MessageTracer class methodsFor:'initialization'!
+!MessageTracer class methodsFor:'initialization'!
initialize
BreakpointSignal isNil ifTrue:[
- BreakpointSignal := HaltSignal newSignalMayProceed:true.
- BreakpointSignal nameClass:self message:#breakpointSignal.
- BreakpointSignal notifierString:'breakpoint encountered'.
+ BreakpointSignal := HaltSignal newSignalMayProceed:true.
+ BreakpointSignal nameClass:self message:#breakpointSignal.
+ BreakpointSignal notifierString:'breakpoint encountered'.
- BreakBlock := [:con | BreakpointSignal raiseIn:con].
- TraceSenderBlock := [:con | MessageTracer printEntrySender:con].
- TraceFullBlock := [:con | con fullPrintAll].
- LeaveBlock := [:con :retVal | ].
+ BreakBlock := [:con | BreakpointSignal raiseIn:con].
+ TraceSenderBlock := [:con | MessageTracer printEntrySender:con].
+ TraceFullBlock := [:con | con fullPrintAll].
+ LeaveBreakBlock := [:con :retVal | ].
+ LeaveTraceBlock := [:con :retVal | ].
]
"
@@ -210,16 +211,16 @@
MessageTracer initialize
"
- "Modified: 15.12.1995 / 18:19:13 / cg"
+ "Modified: 22.10.1996 / 17:39:14 / cg"
! !
-!MessageTracer class methodsFor:'Signal constants'!
+!MessageTracer class methodsFor:'Signal constants'!
breakpointSignal
^ BreakpointSignal
! !
-!MessageTracer class methodsFor:'class tracing'!
+!MessageTracer class methodsFor:'class tracing'!
traceClass:aClass selector:aSelector
"arrange for a trace message to be output on Stderr, when a message with aSelector is
@@ -263,7 +264,7 @@
^ self untrapClass:aClass
! !
-!MessageTracer class methodsFor:'class wrapping'!
+!MessageTracer class methodsFor:'class wrapping'!
wrapClass:orgClass selector:aSelector onEntry:entryBlock onExit:exitBlock
"arrange for the two blocks entryBlock and exitBlock to be evaluated whenever
@@ -427,7 +428,7 @@
"Modified: 10.9.1996 / 20:07:01 / cg"
! !
-!MessageTracer class methodsFor:'cleanup'!
+!MessageTracer class methodsFor:'cleanup'!
cleanup
"if you forgot which classes/methods where wrapped and/or trapped,
@@ -441,7 +442,7 @@
"
! !
-!MessageTracer class methodsFor:'execution trace '!
+!MessageTracer class methodsFor:'execution trace '!
debugTrace:aBlock
"trace execution of aBlock. This is for system debugging only"
@@ -481,7 +482,7 @@
"
! !
-!MessageTracer class methodsFor:'method breakpointing'!
+!MessageTracer class methodsFor:'method breakpointing'!
trapClass:aClass selector:aSelector
"arrange for the debugger to be entered when a message with aSelector is
@@ -512,7 +513,7 @@
^ self wrapMethod:aMethod
onEntry:BreakBlock
- onExit:LeaveBlock.
+ onExit:LeaveBreakBlock.
"
MessageTracer trapMethod:(Collection compiledMethodAt:#select:).
@@ -522,7 +523,7 @@
MessageTracer unwrapMethod:(Collection compiledMethodAt:#select:).
"
- "Modified: 14.10.1996 / 15:10:27 / cg"
+ "Modified: 22.10.1996 / 17:39:58 / cg"
!
trapMethod:aMethod forInstancesOf:aClass
@@ -534,16 +535,18 @@
entry/leave blocks."
^ self wrapMethod:aMethod
- onEntry:[:context |
- (context receiver isMemberOf:aClass) ifTrue:[
- BreakpointSignal raiseIn:context
- ]
- ]
- onExit:LeaveBlock.
+ onEntry:[:context |
+ (context receiver isMemberOf:aClass) ifTrue:[
+ BreakpointSignal raiseIn:context
+ ]
+ ]
+ onExit:LeaveBreakBlock.
"
MessageTracer trapMethod:(View compiledMethodAt:#redraw) forInstancesOf:myView.
"
+
+ "Modified: 22.10.1996 / 17:40:03 / cg"
!
trapMethod:aMethod inProcess:aProcess
@@ -562,9 +565,10 @@
BreakpointSignal raiseIn:con
]
]
- onExit:LeaveBlock.
+ onExit:LeaveBreakBlock.
"Created: 14.10.1996 / 15:38:46 / cg"
+ "Modified: 22.10.1996 / 17:40:06 / cg"
!
untrapAllClasses
@@ -656,7 +660,7 @@
^ self unwrapMethod:aMethod
! !
-!MessageTracer class methodsFor:'method counting'!
+!MessageTracer class methodsFor:'method counting'!
countMethod:aMethod
"arrange for a aMethods execution to be counted.
@@ -726,7 +730,7 @@
"Modified: 15.12.1995 / 15:43:53 / cg"
! !
-!MessageTracer class methodsFor:'method memory usage'!
+!MessageTracer class methodsFor:'method memory usage'!
countMemoryUsageOfMethod:aMethod
"arrange for aMethods memory usage to be counted.
@@ -827,7 +831,7 @@
"Modified: 18.12.1995 / 21:54:36 / stefan"
! !
-!MessageTracer class methodsFor:'method timing'!
+!MessageTracer class methodsFor:'method timing'!
executionTimesOfMethod:aMethod
"return the current times"
@@ -936,7 +940,7 @@
"Modified: 17.6.1996 / 17:10:43 / cg"
! !
-!MessageTracer class methodsFor:'method tracing'!
+!MessageTracer class methodsFor:'method tracing'!
traceMethod:aMethod
"arrange for a trace message to be output on Stderr, when aMethod is executed.
@@ -1010,10 +1014,11 @@
Use untraceMethod to remove this trace."
^ self wrapMethod:aMethod
- onEntry:TraceFullBlock
- onExit:LeaveBlock.
+ onEntry:TraceFullBlock
+ onExit:LeaveTraceBlock.
"Created: 15.12.1995 / 18:19:31 / cg"
+ "Modified: 22.10.1996 / 17:39:28 / cg"
!
traceMethodSender:aMethod
@@ -1022,8 +1027,10 @@
Use untraceMethod to remove this trace."
^ self wrapMethod:aMethod
- onEntry:TraceSenderBlock
- onExit:LeaveBlock.
+ onEntry:TraceSenderBlock
+ onExit:LeaveTraceBlock.
+
+ "Modified: 22.10.1996 / 17:39:33 / cg"
!
untraceMethod:aMethod
@@ -1035,7 +1042,7 @@
^ self unwrapMethod:aMethod
! !
-!MessageTracer class methodsFor:'method wrapping'!
+!MessageTracer class methodsFor:'method wrapping'!
unwrapAllMethods
"just in case you dont know what methods have break/trace-points
@@ -1297,7 +1304,7 @@
"Modified: 25.6.1996 / 22:04:51 / stefan"
! !
-!MessageTracer class methodsFor:'object breakpointing'!
+!MessageTracer class methodsFor:'object breakpointing'!
trap:anObject selector:aSelector
"arrange for the debugger to be entered when a message with aSelector is
@@ -1305,9 +1312,9 @@
The current implementation does not allow integers or nil to be trapped."
self wrap:anObject
- selector:aSelector
- onEntry:BreakBlock
- onExit:LeaveBlock.
+ selector:aSelector
+ onEntry:BreakBlock
+ onExit:LeaveBreakBlock.
"
|p|
@@ -1316,21 +1323,27 @@
MessageTracer trap:p selector:#x:.
p x:5
"
+
+ "Modified: 22.10.1996 / 17:39:41 / cg"
!
trap:anObject selectors:aCollection
self wrap:anObject
- selectors:aCollection
- onEntry:BreakBlock
- onExit:LeaveBlock.
+ selectors:aCollection
+ onEntry:BreakBlock
+ onExit:LeaveBreakBlock.
+
+ "Modified: 22.10.1996 / 17:39:50 / cg"
!
trapAll:anObject
"trap on all messages which are understood by anObject"
self wrapAll:anObject
- onEntry:BreakBlock
- onExit:LeaveBlock.
+ onEntry:BreakBlock
+ onExit:LeaveBreakBlock.
+
+ "Modified: 22.10.1996 / 17:39:54 / cg"
!
trapAll:anObject from:aClass
@@ -1414,7 +1427,7 @@
"Modified: 10.9.1996 / 20:06:14 / cg"
! !
-!MessageTracer class methodsFor:'object tracing'!
+!MessageTracer class methodsFor:'object tracing'!
trace:anObject selector:aSelector
"arrange for a trace message to be output on Stderr, when a message with
@@ -1528,13 +1541,13 @@
methodName := anObject class name , '>>' , aSelector.
self wrap:anObject
- selector:aSelector
- onEntry:[:con |
- methodName errorPrint.
- ' from ' errorPrint.
- con sender errorPrintNL.
- ]
- onExit:LeaveBlock.
+ selector:aSelector
+ onEntry:[:con |
+ methodName errorPrint.
+ ' from ' errorPrint.
+ con sender errorPrintNL.
+ ]
+ onExit:LeaveTraceBlock.
"
|p|
@@ -1555,6 +1568,8 @@
MessageTracer traceSender:a selector:#at:.
a sort.
"
+
+ "Modified: 22.10.1996 / 17:39:36 / cg"
!
untrace:anObject
@@ -1575,7 +1590,7 @@
^ self untrap:anObject selector:aSelector
! !
-!MessageTracer class methodsFor:'object wrapping'!
+!MessageTracer class methodsFor:'object wrapping'!
wrap:anObject selector:aSelector onEntry:entryBlock onExit:exitBlock
"arrange for the two blocks entryBlock and exitBlock to be evaluated whenever
@@ -1782,7 +1797,27 @@
"Modified: 5.6.1996 / 14:50:07 / stefan"
! !
-!MessageTracer class methodsFor:'trace helpers'!
+!MessageTracer class methodsFor:'queries'!
+
+isTrapped:aMethod
+ "return true, if a breakpoint is set on aMethod.
+ This only returns true for standard breakpoints (i.e. for user-wraps,
+ this returns false)"
+
+ aMethod isWrapped ifFalse:[^ false].
+ ^ aMethod basicLiterals includesIdentical:LeaveBreakBlock
+
+ "
+ MessageTracer trapMethod:(Collection compiledMethodAt:#select:).
+ Transcript showCR:(Collection compiledMethodAt:#select:) isWrapped.
+ Transcript showCR:(MessageTracer isTrapped:(Collection compiledMethodAt:#select:)).
+ MessageTracer unwrapMethod:(Collection compiledMethodAt:#select:).
+ "
+
+ "Modified: 22.10.1996 / 17:40:37 / cg"
+! !
+
+!MessageTracer class methodsFor:'trace helpers'!
printEntryFull:aContext
self printEntryFull:aContext level:0
@@ -1868,9 +1903,9 @@
"
! !
-!MessageTracer class methodsFor:'documentation'!
+!MessageTracer class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/MessageTracer.st,v 1.46 1996-10-15 20:46:11 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/MessageTracer.st,v 1.47 1996-10-22 17:57:06 cg Exp $'
! !
MessageTracer initialize!