class: DebugView
authorClaus Gittinger <cg@exept.de>
Mon, 22 Jul 2013 11:38:33 +0200
changeset 13197 74bdfa87c71d
parent 13196 03021754d821
child 13198 c370ef28bca6
class: DebugView comment/format in: #doStep: changed: #stepOrNext don't step into breakpoints (skip)
DebugView.st
--- a/DebugView.st	Sun Jul 21 12:25:50 2013 +0200
+++ b/DebugView.st	Mon Jul 22 11:38:33 2013 +0200
@@ -3305,8 +3305,22 @@
         steppedContext printCR.
     ].
 
-    "/ kludge an bug-workaround;
-    "/ I should not see those ...
+    "/ when single stepping, ignore breakpoints
+    here selector == #break ifTrue:[
+        (here receiver isKindOf:Breakpoint) ifTrue:[
+            false "here receiver isEnabled" ifFalse:[
+                con := nil.
+                where := nil. here := nil.
+                StepInterruptPending := 1.
+                InterruptPending := 1.
+                InStepInterrupt := nil.
+                ^ self
+            ]
+        ].
+    ].
+
+    "/ kludge: a bug-workaround;
+    "/ I should not see those...
 
     here selector == #ioInterrupt ifTrue:[
         DebuggingDebugger2 == true ifTrue:[
@@ -3540,7 +3554,7 @@
             "/ in a block called by 'our' context ?
             "/
             where home == steppedContext ifTrue:[
-"/ '*block*' printCR.
+                "/ '*block*' printCR.
                 inBlock := true
             ]
         ].
@@ -3550,7 +3564,7 @@
 
             where notNil ifTrue:[
                 where home == steppedContext ifTrue:[
-"/ '*block*' printCR.
+                    "/ '*block*' printCR.
                     inBlock := true.
                 ]
             ].
@@ -3576,22 +3590,35 @@
                         "/ do a single step. Otherwise, stepping through a
                         "/ do:-loop would be very difficult.
                         receiver := where receiver.
+where selector == #critical: ifTrue:[
+anyStepBlocks := true.
+] ifFalse:[
                         (receiver isBlock
                         and:[(receiver isKindOf:Block)
-                        and:[receiver home == steppedContext]])
+                        and:[receiver homeMethod == steppedContext method
+                             "receiver home == steppedContext"]])
                         ifTrue:[
                             anyStepBlocks := true.
                         ] ifFalse:[
                             where args do:[:arg |
                                 (arg isBlock
                                 and:[(arg isKindOf:Block)
-                                and:[arg home == steppedContext]])
+                                and:[arg homeMethod == steppedContext method
+                                     "arg home == steppedContext"]])
                                 ifTrue:[
                                     anyStepBlocks := true.
-                                ]
+                                ] ifFalse:[
+                                    (where methodHome receiver isBlock
+                                    and:[(where methodHome receiver isKindOf:Block)
+                                    and:[where methodHome receiver homeMethod == steppedContext method
+                                         "where methodHome receiver home == steppedContext"]])
+                                    ifTrue:[
+                                        anyStepBlocks := true.
+                                    ]
+                                ].
                             ]
                         ].
-
+].
                         DebuggingDebugger2 == true ifTrue:[
                             ((ObjectMemory addressOf:where) printStringRadix:16)print. ' ' print.
                             where selector printCR.
@@ -3763,10 +3790,15 @@
     ].
 
     inBlock ifTrue:[
-"/ 'inBlock' printCR.
+        DebuggingDebugger2 == true ifTrue:[
+            'inBlock' printCR.
+        ].
         s := 'in block'.
     ].
     inBlockBelow ifTrue:[
+        DebuggingDebugger2 == true ifTrue:[
+            'inBlockBelow' printCR.
+        ].
         ignore := true
     ].
 
@@ -4703,7 +4735,7 @@
     "Modified: 7.3.1997 / 18:46:49 / cg"
 !
 
-doStep:lineNr
+doStep:lineNrOrNilOrMinus1
     "common helper for step, skip & next.
      Arrange for single-steppping until we pass lineNr (if nonNil)
      or to next line (if nil) or to next send (if -1)"
@@ -4728,9 +4760,9 @@
             steppedContextLineno := con lineNumber.
         ].
 
-        skipLineNr := lineNr.
-
-        lineNr == -1 ifTrue:[
+        skipLineNr := lineNrOrNilOrMinus1.
+
+        lineNrOrNilOrMinus1 == -1 ifTrue:[
             steppedContextLineno := skipLineNr := nil.
         ].
 
@@ -4744,6 +4776,7 @@
                 steppedContext := con.
             ].
         ].
+
         wrapperContext := nil.
 
 "/ ' step con:' print. (ObjectMemory addressOf:steppedContext) printHex. ' ' print. steppedContext printCR.
@@ -4761,7 +4794,7 @@
             inWrap := true
         ].
 
-        lineNr == #return ifTrue:[
+        lineNrOrNilOrMinus1 == #return ifTrue:[
             Processor activeProcess forceInterruptOnReturnOf:con.
         ].
 
@@ -8529,15 +8562,15 @@
 !DebugView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.600 2013-07-13 20:39:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.601 2013-07-22 09:38:33 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.600 2013-07-13 20:39:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.601 2013-07-22 09:38:33 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: DebugView.st,v 1.600 2013-07-13 20:39:12 cg Exp $'
+    ^ '$Id: DebugView.st,v 1.601 2013-07-22 09:38:33 cg Exp $'
 ! !