DebugView.st
branchjv
changeset 13250 0decde6c459d
parent 13182 bc686a7cc736
parent 13210 214639c7834e
child 13289 cc75e3cd0362
--- a/DebugView.st	Tue Jul 23 20:55:42 2013 +0100
+++ b/DebugView.st	Wed Jul 24 11:15:26 2013 +0100
@@ -3328,8 +3328,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:[
@@ -3563,7 +3577,7 @@
             "/ in a block called by 'our' context ?
             "/
             where home == steppedContext ifTrue:[
-"/ '*block*' printCR.
+                "/ '*block*' printCR.
                 inBlock := true
             ]
         ].
@@ -3573,7 +3587,7 @@
 
             where notNil ifTrue:[
                 where home == steppedContext ifTrue:[
-"/ '*block*' printCR.
+                    "/ '*block*' printCR.
                     inBlock := true.
                 ]
             ].
@@ -3599,22 +3613,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.
@@ -3786,10 +3813,15 @@
     ].
 
     inBlock ifTrue:[
-"/ 'inBlock' printCR.
+        DebuggingDebugger2 == true ifTrue:[
+            'inBlock' printCR.
+        ].
         s := 'in block'.
     ].
     inBlockBelow ifTrue:[
+        DebuggingDebugger2 == true ifTrue:[
+            'inBlockBelow' printCR.
+        ].
         ignore := true
     ].
 
@@ -4727,7 +4759,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)"
@@ -4752,9 +4784,9 @@
             steppedContextLineno := con lineNumber.
         ].
 
-        skipLineNr := lineNr.
-
-        lineNr == -1 ifTrue:[
+        skipLineNr := lineNrOrNilOrMinus1.
+
+        lineNrOrNilOrMinus1 == -1 ifTrue:[
             steppedContextLineno := skipLineNr := nil.
         ].
 
@@ -4768,6 +4800,7 @@
                 steppedContext := con.
             ].
         ].
+
         wrapperContext := nil.
 
 "/ ' step con:' print. (ObjectMemory addressOf:steppedContext) printHex. ' ' print. steppedContext printCR.
@@ -4785,7 +4818,7 @@
             inWrap := true
         ].
 
-        lineNr == #return ifTrue:[
+        lineNrOrNilOrMinus1 == #return ifTrue:[
             Processor activeProcess forceInterruptOnReturnOf:con.
         ].
 
@@ -5019,7 +5052,7 @@
         items := items , #(
                     ('-'                                                        )
                     ('Browse Implementing Class'      browseImplementingClass )
-                    ('Browse Receivers Class'             browseReceiversClass    )
+                    ('Browse Receiver''s Class'             browseReceiversClass    )
 "/                    ('Browse Receivers Class Hierarchy'   browseClassHierarchy    )
 "/                    ('Browse Receivers Full Protocol'     browseFullClassProtocol )
                     ('Implementors'                     browseImplementors      )
@@ -5060,7 +5093,7 @@
 
     ^ m.
 
-    "Modified: / 27-07-2012 / 15:01:20 / cg"
+    "Modified: / 22-07-2013 / 15:30:05 / cg"
 !
 
 notShowingSupportCode
@@ -8573,11 +8606,11 @@
 !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.602 2013-07-22 14:01:57 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.602 2013-07-22 14:01:57 cg Exp $'
 !
 
 version_HG
@@ -8586,7 +8619,7 @@
 !
 
 version_SVN
-    ^ '$Id: DebugView.st,v 1.600 2013-07-13 20:39:12 cg Exp $'
+    ^ '$Id: DebugView.st,v 1.602 2013-07-22 14:01:57 cg Exp $'
 ! !