MessageTracer.st
changeset 735 a82f12caf84f
parent 734 726905bea1bb
child 736 6fa613ec20ab
equal deleted inserted replaced
734:726905bea1bb 735:a82f12caf84f
     9  other person.  No title to or ownership of the software is
     9  other person.  No title to or ownership of the software is
    10  hereby transferred.
    10  hereby transferred.
    11 "
    11 "
    12 
    12 
    13 Object subclass:#MessageTracer
    13 Object subclass:#MessageTracer
    14 	instanceVariableNames:'traceDetail'
    14 	instanceVariableNames:'traceDetail tracedBlock'
    15 	classVariableNames:'BreakpointSignal CallingLevel BreakBlock TraceSenderBlock
    15 	classVariableNames:'BreakpointSignal CallingLevel BreakBlock TraceSenderBlock
    16 		TraceSenderBlock2 LeaveBreakBlock LeaveTraceBlock MethodCounts
    16 		TraceSenderBlock2 LeaveBreakBlock LeaveTraceBlock MethodCounts
    17 		MethodMemoryUsage MethodTiming TraceFullBlock TraceFullBlock2
    17 		MethodMemoryUsage MethodTiming TraceFullBlock TraceFullBlock2
    18 		ObjectWrittenBreakpointSignal ObjectCopyHolders TimeForWrappers'
    18 		ObjectWrittenBreakpointSignal ObjectCopyHolders TimeForWrappers'
    19 	poolDictionaries:''
    19 	poolDictionaries:''
    20 	category:'System-Debugging-Support'
    20 	category:'System-Debugging-Support'
    21 !
    21 !
    22 
    22 
       
    23 MessageTracer subclass:#InteractionCollector
       
    24 	instanceVariableNames:''
       
    25 	classVariableNames:''
       
    26 	poolDictionaries:''
       
    27 	privateIn:MessageTracer
       
    28 !
       
    29 
    23 MessageTracer subclass:#PrintingMessageTracer
    30 MessageTracer subclass:#PrintingMessageTracer
    24 	instanceVariableNames:'tracedBlock'
    31 	instanceVariableNames:''
    25 	classVariableNames:''
    32 	classVariableNames:''
    26 	poolDictionaries:''
    33 	poolDictionaries:''
    27 	privateIn:MessageTracer
    34 	privateIn:MessageTracer
    28 !
    35 !
    29 
    36 
  2670         bold;
  2677         bold;
  2671         nextPutAll:aContext selector;
  2678         nextPutAll:aContext selector;
  2672         normal;
  2679         normal;
  2673         nextPutAll:' rec=['.
  2680         nextPutAll:' rec=['.
  2674 
  2681 
  2675     aContext receiver printOn:aStream.
  2682     self printObject:aContext receiver on:aStream.
       
  2683 
  2676     aStream nextPutAll:'] '. 
  2684     aStream nextPutAll:'] '. 
  2677     (aContext args) keysAndValuesDo:[:idx :arg |
  2685     (aContext args) keysAndValuesDo:[:idx :arg |
  2678         |s|
       
  2679 
       
  2680         s := arg printString.
       
  2681         s > 20 ifTrue:[
       
  2682             s := arg classNameWithArticle
       
  2683         ].
       
  2684         aStream nextPutAll:'arg'. idx printOn:aStream. aStream nextPutAll:'=['.
  2686         aStream nextPutAll:'arg'. idx printOn:aStream. aStream nextPutAll:'=['.
  2685         s printOn:aStream.
  2687         self printObject:arg on:aStream.
  2686         aStream nextPutAll:'] '.
  2688         aStream nextPutAll:'] '.
  2687     ].
  2689     ].
  2688 
  2690 
  2689     withSender ifTrue:[
  2691     withSender ifTrue:[
  2690         sender := aContext sender.
  2692         sender := aContext sender.
  2699     aStream cr; flush.
  2701     aStream cr; flush.
  2700 
  2702 
  2701     "Modified: 5.3.1997 / 12:40:55 / cg"
  2703     "Modified: 5.3.1997 / 12:40:55 / cg"
  2702 !
  2704 !
  2703 
  2705 
       
  2706 printObject:anObject on:aStream
       
  2707     |s|
       
  2708 
       
  2709     s := anObject printString.
       
  2710     s size > 20 ifTrue:[
       
  2711         s := anObject classNameWithArticle
       
  2712     ].
       
  2713     aStream nextPutAll:s
       
  2714 !
       
  2715 
  2704 traceEntryFull:aContext on:aStream
  2716 traceEntryFull:aContext on:aStream
  2705     aStream nextPutLine:'-----------------------------------------'.
  2717     aStream nextPutLine:'-----------------------------------------'.
  2706     aContext fullPrintAllOn:aStream
  2718     aContext fullPrintAllOn:aStream
  2707 
  2719 
  2708     "Created: / 30.7.1998 / 20:39:57 / cg"
  2720     "Created: / 30.7.1998 / 20:39:57 / cg"
  2743 
  2755 
  2744 trace:aBlock detail:fullDetail
  2756 trace:aBlock detail:fullDetail
  2745     "trace execution of aBlock."
  2757     "trace execution of aBlock."
  2746 
  2758 
  2747     traceDetail := fullDetail.
  2759     traceDetail := fullDetail.
       
  2760     tracedBlock := aBlock.
       
  2761 
  2748     ObjectMemory stepInterruptHandler:self.
  2762     ObjectMemory stepInterruptHandler:self.
  2749     ^ [
  2763     ^ [
  2750 	ObjectMemory flushInlineCaches.
  2764         ObjectMemory flushInlineCaches.
  2751 	StepInterruptPending := 1.
  2765         StepInterruptPending := 1.
  2752 	InterruptPending := 1.
  2766         InterruptPending := 1.
  2753 	aBlock value
  2767         aBlock value
  2754     ] valueNowOrOnUnwindDo:[
  2768     ] valueNowOrOnUnwindDo:[
  2755 	StepInterruptPending := nil.
  2769         tracedBlock := nil.
  2756 	ObjectMemory stepInterruptHandler:nil.
  2770         StepInterruptPending := nil.
       
  2771         ObjectMemory stepInterruptHandler:nil.
  2757     ]
  2772     ]
  2758 
  2773 
  2759     "
  2774     "
  2760      MessageTracer trace:[#(6 5 4 3 2 1) sort] detail:false
  2775      PrintingMessageTracer new trace:[#(6 5 4 3 2 1) sort] detail:false
  2761      MessageTracer trace:[#(6 5 4 3 2 1) sort] detail:true 
  2776 
  2762     "
  2777      PrintingMessageTracer new trace:[#(6 5 4 3 2 1) sort] detail:true 
       
  2778 
       
  2779      PrintingMessageTracer new trace:[#(6 5 4 3 2 1) sort] detail:#indent 
       
  2780 
       
  2781      PrintingMessageTracer new trace:[#(6 5 4 3 2 1) sort] detail:#fullIndent 
       
  2782     "
       
  2783 
  2763 ! !
  2784 ! !
  2764 
  2785 
  2765 !MessageTracer::PrintingMessageTracer methodsFor:'trace helpers '!
  2786 !MessageTracer::PrintingMessageTracer methodsFor:'trace helpers '!
  2766 
  2787 
  2767 stepInterrupt
  2788 stepInterrupt
  2835      self new trace:[#(6 5 4 3 2 1) sort] detail:#indent 
  2856      self new trace:[#(6 5 4 3 2 1) sort] detail:#indent 
  2836 
  2857 
  2837      self new trace:[#(6 5 4 3 2 1) sort] detail:#fullIndent 
  2858      self new trace:[#(6 5 4 3 2 1) sort] detail:#fullIndent 
  2838      self new trace:[ View new ] detail:#fullIndent 
  2859      self new trace:[ View new ] detail:#fullIndent 
  2839     "
  2860     "
  2840 !
       
  2841 
       
  2842 trace:aBlock detail:fullDetail
       
  2843     "trace execution of aBlock."
       
  2844 
       
  2845     tracedBlock := aBlock.
       
  2846     ^ super trace:aBlock detail:fullDetail
       
  2847 
       
  2848     "
       
  2849      self new trace:[#(6 5 4 3 2 1) sort] detail:false
       
  2850 
       
  2851      self new trace:[#(6 5 4 3 2 1) sort] detail:true 
       
  2852 
       
  2853      self new trace:[#(6 5 4 3 2 1) sort] detail:#indent 
       
  2854 
       
  2855      self new trace:[#(6 5 4 3 2 1) sort] detail:#fullIndent 
       
  2856     "
       
  2857 
       
  2858 ! !
  2861 ! !
  2859 
  2862 
  2860 !MessageTracer class methodsFor:'documentation'!
  2863 !MessageTracer class methodsFor:'documentation'!
  2861 
  2864 
  2862 version
  2865 version
  2863     ^ '$Header: /cvs/stx/stx/libbasic3/MessageTracer.st,v 1.77 1999-02-25 15:23:41 cg Exp $'
  2866     ^ '$Header: /cvs/stx/stx/libbasic3/MessageTracer.st,v 1.78 1999-02-25 15:31:50 cg Exp $'
  2864 ! !
  2867 ! !
  2865 MessageTracer initialize!
  2868 MessageTracer initialize!