# HG changeset patch # User Claus Gittinger # Date 1374485913 -7200 # Node ID 74bdfa87c71dc1c1e695d48d92d8caaa285acfcf # Parent 03021754d82131cfc9723ee6f572c45731e7764c class: DebugView comment/format in: #doStep: changed: #stepOrNext don't step into breakpoints (skip) diff -r 03021754d821 -r 74bdfa87c71d 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 $' ! !