skip recursive contexts when shwing backtrace
authorClaus Gittinger <cg@exept.de>
Mon, 26 Jan 2004 16:12:32 +0100
changeset 7839 d6d9fac8b4db
parent 7838 4cf3d0dad430
child 7840 a57bac3c9c68
skip recursive contexts when shwing backtrace
MiniDebugger.st
--- a/MiniDebugger.st	Mon Jan 26 16:11:50 2004 +0100
+++ b/MiniDebugger.st	Mon Jan 26 16:12:32 2004 +0100
@@ -54,7 +54,7 @@
 enter:aContext withMessage:aString mayProceed:mayProceed
     "enter a miniDebugger"
 
-    |active con|
+    |active con sender|
 
     StepInterruptPending := nil.
 
@@ -76,7 +76,18 @@
                 con := con sender.
                 ' ......: ' print. con printString printCR.
                 [con notNil] whileTrue:[
-                    con := con sender.
+                    sender := con sender.
+                    (sender notNil and:[sender selector == con selector]) ifTrue:[
+                        ' ......: ' print. sender printString printCR.
+                        ' ......:  [** intermediate recursive contexts skipped **]' printCR.
+                        [sender notNil 
+                         and:[sender selector == con selector
+                         and:[sender method == con method]]] whileTrue:[
+                            con := sender.
+                            sender := con sender.
+                        ].
+                    ].
+                    con := sender.
                     ' ......: ' print. con printString printCR.
                 ]
             ]
@@ -786,5 +797,5 @@
 !MiniDebugger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.62 2003-10-27 23:00:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.63 2004-01-26 15:12:32 cg Exp $'
 ! !