MiniDebugger.st
changeset 10374 71de61c77770
parent 10322 b1c70a1fc8d7
child 10554 d55478de663b
--- a/MiniDebugger.st	Wed Feb 07 10:50:22 2007 +0100
+++ b/MiniDebugger.st	Wed Feb 07 11:38:27 2007 +0100
@@ -209,68 +209,73 @@
     nesting := 0.
     c := aContext.
     [c notNil] whileTrue:[
-	c selector == #enter:mayProceed: ifTrue:[
-	    nesting := nesting + 1.
-	].
-	c := c sender.
+        c selector == #enter:mayProceed: ifTrue:[
+            nesting := nesting + 1.
+        ].
+        c := c sender.
     ].
 
     stillHere := true.
     [stillHere] whileTrue:[
-	AbortOperationRequest handle:[:ex |
-	    '** Abort cought - back in previous debugLevel' printCR.
-	] do:[
-	    Error handle:[:ex |
-		'Error while executing command: ' print.
-		ex description printCR.
-		yesNo := self getCommand:'- (i)gnore / (p)roceed / (d)ebug ? '.
-		yesNo == $d ifTrue:[
-		    ex reject
-		].
-		yesNo == $p ifTrue:[
-		    ex proceed
-		].
-	    ] do:[
-		[
-		    leaveCmd := self commandLoop.
-		] valueUnpreemptively.
-	    ].
-	].
+        AbortOperationRequest handle:[:ex |
+            '** Abort cought - back in previous debugLevel' printCR.
+        ] do:[
+            Error handle:[:ex |
+                'Error while executing command: ' print.
+                ex description printCR.
+                yesNo := self getCommand:'- (i)gnore / (p)roceed / (d)ebug / b(acktrace) ? '.
+                yesNo == $d ifTrue:[
+                    MiniDebugger enterWithMessage:'Debugging debugger' mayProceed:true.
+                    ex proceed
+                ].
+                yesNo == $p ifTrue:[
+                    ex proceed
+                ].
+                yesNo == $b ifTrue:[
+                    ex suspendedContext fullPrintAll.
+                    ex proceed
+                ].
+            ] do:[
+                [
+                    leaveCmd := self commandLoop.
+                ] valueUnpreemptively.
+            ].
+        ].
 
-	(leaveCmd == $s) ifTrue: [
-	    self stepping.
-	    ObjectMemory flushInlineCaches.
-	    ObjectMemory stepInterruptHandler:self.
-	    stillHere := false.
-	    StepInterruptPending := 1.
-	    InterruptPending := 1
-	].
-	(leaveCmd == $t) ifTrue: [
-	    traceBlock := [:where | where fullPrint].
-	    ObjectMemory flushInlineCaches.
-	    ObjectMemory stepInterruptHandler:self.
-	    stillHere := false.
-	    StepInterruptPending := 1.
-	    InterruptPending := 1
-	].
-	(leaveCmd == $c) ifTrue: [
-	    traceBlock := nil.
-	    stillHere := false.
-	    stepping := false.
-	    tracing := false.
-	    StepInterruptPending := nil.
-	    InterruptPending := nil
-	].
-	(leaveCmd == $a) ifTrue: [
-	    "abort"
-	    stepping := false.
-	    tracing := false.
-	    StepInterruptPending := nil.
-	    InterruptPending := nil.
-	    self doAbort.
-	    stillHere := true.
-	    "failed abort"
-	].
+        (leaveCmd == $s) ifTrue: [
+            self stepping.
+            ObjectMemory flushInlineCaches.
+            ObjectMemory stepInterruptHandler:self.
+            stillHere := false.
+            StepInterruptPending := 1.
+            InterruptPending := 1
+        ].
+        (leaveCmd == $t) ifTrue: [
+            traceBlock := [:where | where fullPrint].
+            ObjectMemory flushInlineCaches.
+            ObjectMemory stepInterruptHandler:self.
+            stillHere := false.
+            StepInterruptPending := 1.
+            InterruptPending := 1
+        ].
+        (leaveCmd == $c) ifTrue: [
+            traceBlock := nil.
+            stillHere := false.
+            stepping := false.
+            tracing := false.
+            StepInterruptPending := nil.
+            InterruptPending := nil
+        ].
+        (leaveCmd == $a) ifTrue: [
+            "abort"
+            stepping := false.
+            tracing := false.
+            StepInterruptPending := nil.
+            InterruptPending := nil.
+            self doAbort.
+            stillHere := true.
+            "failed abort"
+        ].
     ].
     enteringContext := dot := nil.
     ^ nil
@@ -837,5 +842,5 @@
 !MiniDebugger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.69 2007-01-12 20:58:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/MiniDebugger.st,v 1.70 2007-02-07 10:38:27 ca Exp $'
 ! !