class: DebugView
comment/format in: #doStep:
changed: #stepOrNext
don't step into breakpoints (skip)
--- 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 $'
! !