--- a/DebugView.st Fri Jan 27 11:13:48 2012 +0100
+++ b/DebugView.st Fri Jan 27 11:50:31 2012 +0100
@@ -1,6 +1,6 @@
"
COPYRIGHT (c) 1989 by Claus Gittinger
- All Rights Reserved
+ All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -12,35 +12,36 @@
"{ Package: 'stx:libtool' }"
StandardSystemView subclass:#DebugView
- instanceVariableNames:'busy haveControl exitAction canContinue contextView codeView
- receiverInspector contextInspector contextArray selectedContext
- catchBlock grabber mayProceed traceView tracing bigStep
- skipLineNr steppedContextAddress abortButton terminateButton
- continueButton stepButton nextButton nextOverButton nextOutButton
- sendButton returnButton restartButton exclusive inspecting
- nChainShown inspectedProcess updateProcess stopButton
- updateButton defineButton monitorToggle stepping
- steppedContextLineno stepForReturn actualContext inWrap
- stackInspector steppedContext wrapperContext verboseBacktrace
- firstContext stepHow cachable currentMethod ignoreBreakpoints
- stepUntilEntering lastStepUntilEntering
- lastSelectionInReceiverInspector lastSelectionInContextInspector
- canShowMore exitAbort reportButton setOfHiddenCallingSelectors
- isStoppedAtHaltOrBreakPoint exceptionInfoLabel methodCodeToggle
- methodCodeToggleSelectionHolder'
- classVariableNames:'CachedDebugger CachedExclusive OpenDebuggers MoreDebuggingDetail
- DebuggingDebugger DefaultDebuggerBackgroundColor
- InitialNChainShown IgnoredHalts ShowThreadID LastIgnoreHaltNTimes
- LastIgnoreHaltDuration LastExtent LastOrigin'
- poolDictionaries:''
- category:'Interface-Debugger'
+ instanceVariableNames:'busy haveControl exitAction canContinue contextView codeView
+ receiverInspector contextInspector contextArray selectedContext
+ catchBlock grabber mayProceed traceView tracing bigStep
+ skipLineNr steppedContextAddress abortButton terminateButton
+ continueButton stepButton nextButton nextOverButton nextOutButton
+ sendButton returnButton restartButton exclusive inspecting
+ nChainShown inspectedProcess updateProcess stopButton
+ updateButton defineButton monitorToggle stepping
+ steppedContextLineno stepForReturn actualContext inWrap
+ stackInspector steppedContext wrapperContext verboseBacktrace
+ firstContext stepHow cachable currentMethod ignoreBreakpoints
+ stepUntilEntering lastStepUntilEntering
+ lastSelectionInReceiverInspector lastSelectionInContextInspector
+ canShowMore exitAbort reportButton setOfHiddenCallingSelectors
+ isStoppedAtHaltOrBreakPoint exceptionInfoLabel methodCodeToggle
+ methodCodeToggleSelectionHolder'
+ classVariableNames:'CachedDebugger CachedExclusive OpenDebuggers MoreDebuggingDetail
+ DebuggingDebugger DefaultDebuggerBackgroundColor
+ InitialNChainShown IgnoredHalts ShowThreadID LastIgnoreHaltNTimes
+ LastIgnoreHaltDuration LastExtent LastOrigin'
+ poolDictionaries:''
+ category:'Interface-Debugger'
!
Object subclass:#IgnoredHalt
- instanceVariableNames:'weakMethodHolder lineNumber ignoreEndTime ignoreCount'
- classVariableNames:''
- poolDictionaries:''
- privateIn:DebugView
+ instanceVariableNames:'weakMethodHolder lineNumber ignoreEndTime ignoreCount
+ ignoreUntilShiftKeyPressed'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:DebugView
!
!DebugView class methodsFor:'documentation'!
@@ -48,7 +49,7 @@
copyright
"
COPYRIGHT (c) 1989 by Claus Gittinger
- All Rights Reserved
+ All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -84,25 +85,25 @@
See additional information in 'doc/misc/debugger.doc'.
Notice:
- the DebugView class caches the last used debugger in a class
- variable. It may happen, that a malfunctioning debugger (for example,
- a halfway destroyed one) is kept there. You will notice this, if a
- debugger comes up without showing any contents. In this case, close
- (or destroy) the broken debugView, and execute
- Debugger newDebugger
- which removes the cached debugger and forces creation of a new one the
- next time. This is a temporary workaround - the debugger will be fixed to
- avoid this problem.
- You also have to remove the cached debugger, if you change the debugger's
- initialization code (buttons, menu, etc.) and you want the new code to become
- effective.
+ the DebugView class caches the last used debugger in a class
+ variable. It may happen, that a malfunctioning debugger (for example,
+ a halfway destroyed one) is kept there. You will notice this, if a
+ debugger comes up without showing any contents. In this case, close
+ (or destroy) the broken debugView, and execute
+ Debugger newDebugger
+ which removes the cached debugger and forces creation of a new one the
+ next time. This is a temporary workaround - the debugger will be fixed to
+ avoid this problem.
+ You also have to remove the cached debugger, if you change the debugger's
+ initialization code (buttons, menu, etc.) and you want the new code to become
+ effective.
[author:]
- Claus Gittinger
+ Claus Gittinger
[see also:]
- Exception Signal
- Process
+ Exception Signal
+ Process
"
! !
@@ -148,7 +149,7 @@
OpenDebuggers := nil.
(Debugger isBehavior and:[Debugger name = #DebugView]) ifTrue:[
- Debugger := self
+ Debugger := self
].
"
@@ -207,9 +208,9 @@
IgnoredHalts isNil ifTrue:[^ nil].
IgnoredHalts do:[:ign |
- (ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
- ^ ign
- ].
+ (ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
+ ^ ign
+ ].
].
^ nil.
!
@@ -219,7 +220,7 @@
^ IgnoredHalts notEmptyOrNil
!
-ignoreHaltIn:haltingMethod at:lineNrOfHalt forCount:countOrNil orTimeDuration:dTOrNil
+ignoreHaltIn:haltingMethod at:lineNrOfHalt forCount:countOrNil orTimeDuration:dTOrNil orUntilShiftKey:untilShiftKey
"remember to ignore a halt in some method for some number of invocations
or until some time has elapsed.
With nil count and time arguments, such an ignored halt is reactivated"
@@ -227,32 +228,35 @@
|oldEntry ign|
IgnoredHalts notNil ifTrue:[
- self removeInactiveIgnores.
- oldEntry := IgnoredHalts
- detect:[:ign | ign isForMethod:haltingMethod line:lineNrOfHalt]
- ifNone:nil.
- oldEntry notNil ifTrue:[
- IgnoredHalts remove:oldEntry ifAbsent:[].
- ]
- ].
-
- (countOrNil notNil or:[dTOrNil notNil]) ifTrue:[
- IgnoredHalts isNil ifTrue:[
- IgnoredHalts := OrderedCollection new.
- ].
- ign := IgnoredHalt new method:haltingMethod lineNumber:lineNrOfHalt.
-
- (countOrNil notNil and:[countOrNil > 0]) ifTrue:[
- ign ignoreCount:countOrNil.
- ].
- (dTOrNil notNil) ifTrue:[
- ign ignoreEndTime:(Timestamp now + dTOrNil).
- ].
- IgnoredHalts add:ign.
+ self removeInactiveIgnores.
+ oldEntry := IgnoredHalts
+ detect:[:ign | ign isForMethod:haltingMethod line:lineNrOfHalt]
+ ifNone:nil.
+ oldEntry notNil ifTrue:[
+ IgnoredHalts remove:oldEntry ifAbsent:[].
+ ]
+ ].
+
+ (countOrNil notNil or:[dTOrNil notNil or:[untilShiftKey == true]]) ifTrue:[
+ IgnoredHalts isNil ifTrue:[
+ IgnoredHalts := OrderedCollection new.
+ ].
+ ign := IgnoredHalt new method:haltingMethod lineNumber:lineNrOfHalt.
+
+ (countOrNil notNil and:[countOrNil > 0]) ifTrue:[
+ ign ignoreCount:countOrNil.
+ ].
+ (dTOrNil notNil) ifTrue:[
+ ign ignoreEndTime:(Timestamp now + dTOrNil).
+ ].
+ untilShiftKey == true ifTrue:[
+ ign ignoreUntilShiftKeyPressed:true.
+ ].
+ IgnoredHalts add:ign.
].
Smalltalk changed:#ignoredHalts.
- "Modified: / 22-10-2010 / 13:52:02 / cg"
+ "Created: / 27-01-2012 / 11:33:38 / cg"
!
isHaltToBeIgnored
@@ -317,9 +321,9 @@
isHaltToBeIgnoredIn:haltingMethod atLineNr:lineNrInHaltingMethod
^ self
- isHaltToBeIgnoredIn:haltingMethod
- atLineNr:lineNrInHaltingMethod
- modifyEntryCount:false
+ isHaltToBeIgnoredIn:haltingMethod
+ atLineNr:lineNrInHaltingMethod
+ modifyEntryCount:false
!
isHaltToBeIgnoredIn:haltingMethod atLineNr:lineNrInHaltingMethod modifyEntryCount:modifyCount
@@ -329,33 +333,34 @@
"/ Transcript showCR:'halt/break in ',haltingMethod printString,' at ',lineNrInHaltingMethod printString.
IgnoredHalts do:[:ign |
- (ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
- Transcript showCR:'Debugger [info]: halt ignored in ', haltingMethod whoString.
- modifyCount ifTrue:[ ign decrementIgnoreCount ].
- ign isHaltIgnored ifFalse:[
- Transcript showCR:'Debugger [info]: no longer ignore halt in ', haltingMethod whoString.
- IgnoredHalts remove:ign ifAbsent:[].
- ].
- ^ true.
- ].
+ (ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
+ Transcript show:'Debugger [info]: halt ignored in ', haltingMethod whoString.
+ Transcript show:' ('; show:ign; showCR:')'.
+ modifyCount ifTrue:[ ign decrementIgnoreCount ].
+ ign isHaltIgnored ifFalse:[
+ Transcript showCR:'Debugger [info]: no longer ignore halt in ', haltingMethod whoString.
+ IgnoredHalts remove:ign ifAbsent:[].
+ ].
+ ^ true.
+ ].
].
IgnoredHalts := IgnoredHalts
- select:[:ign |
- ign isActive and:[ (ign isForMethod:haltingMethod line:lineNrInHaltingMethod) not ]
- ].
+ select:[:ign |
+ ign isActive and:[ (ign isForMethod:haltingMethod line:lineNrInHaltingMethod) not ]
+ ].
IgnoredHalts isEmpty ifTrue:[
- IgnoredHalts := nil.
+ IgnoredHalts := nil.
].
^ false.
- "Modified: / 22-10-2010 / 13:51:45 / cg"
+ "Modified: / 27-01-2012 / 11:41:19 / cg"
!
removeInactiveIgnores
IgnoredHalts notNil ifTrue:[
- IgnoredHalts := IgnoredHalts select:[:i | i isActive].
+ IgnoredHalts := IgnoredHalts select:[:i | i isActive].
].
!
@@ -374,9 +379,9 @@
<context: #return>
^ self
- enter:thisContext sender
- withMessage:'debugger entered'
- mayProceed:true.
+ enter:thisContext sender
+ withMessage:'debugger entered'
+ mayProceed:true.
!
enter:aContext withMessage:aString
@@ -385,9 +390,9 @@
<context: #return>
^ self
- enter:aContext
- withMessage:aString
- mayProceed:true
+ enter:aContext
+ withMessage:aString
+ mayProceed:true
!
enter:aContext withMessage:aString mayProceed:mayProceed
@@ -402,32 +407,32 @@
StepInterruptPending := nil.
ControlInterrupt handle:[:ex |
- 'DebugView [info]: breakpoint in debugger setup ignored [enter.]' infoPrintCR.
- ('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
- ex proceed
+ 'DebugView [info]: breakpoint in debugger setup ignored [enter.]' infoPrintCR.
+ ('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
+ ex proceed
] do:[
- "
- well, it could be a stepping or sending debugger up there;
- in this case, return to it. This happens, when a stepping process
- runs into an error (for example, a halt). In this case, we want the
- stepping debugger to come up again instead of a new one.
- "
- OpenDebuggers notNil ifTrue:[
- active := Processor activeProcess.
- OpenDebuggers do:[:aDebugger |
- (aDebugger notNil and:[aDebugger ~~ 0]) ifTrue:[
- (aDebugger inspectedProcess == active) ifTrue:[
- aDebugger device isOpen ifTrue:[
- "/ 'entering stepping debugger again' printNL.
- aDebugger unstep.
- aDebugger setLabelFor:aString in:active.
- aDebugger mayProceed:mayProceed.
- ^ aDebugger enter:aContext select:nil.
- ]
- ]
- ]
- ]
- ].
+ "
+ well, it could be a stepping or sending debugger up there;
+ in this case, return to it. This happens, when a stepping process
+ runs into an error (for example, a halt). In this case, we want the
+ stepping debugger to come up again instead of a new one.
+ "
+ OpenDebuggers notNil ifTrue:[
+ active := Processor activeProcess.
+ OpenDebuggers do:[:aDebugger |
+ (aDebugger notNil and:[aDebugger ~~ 0]) ifTrue:[
+ (aDebugger inspectedProcess == active) ifTrue:[
+ aDebugger device isOpen ifTrue:[
+ "/ 'entering stepping debugger again' printNL.
+ aDebugger unstep.
+ aDebugger setLabelFor:aString in:active.
+ aDebugger mayProceed:mayProceed.
+ ^ aDebugger enter:aContext select:nil.
+ ]
+ ]
+ ]
+ ]
+ ].
].
^ self enterUnconditional:aContext withMessage:aString mayProceed:mayProceed
@@ -441,9 +446,9 @@
sent from error- and halt messages."
^ self
- enter:ex returnableSuspendedContext
- withMessage:ex descriptionForDebugger
- mayProceed:(ex mayProceed).
+ enter:ex returnableSuspendedContext
+ withMessage:ex descriptionForDebugger
+ mayProceed:(ex mayProceed).
!
enterUnconditional:aContext withMessage:aString mayProceed:mayProceed
@@ -458,27 +463,27 @@
"/ ignore halts & breakpoints while setting up the debugger
"/ to avoid recursive debugging ...
ControlInterrupt handle:[:ex |
- 'DebugView [info]: breakpoint in debugger setup ignored [enterUncond.]' infoPrintCR.
- ('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
- ex proceed
+ 'DebugView [info]: breakpoint in debugger setup ignored [enterUncond.]' infoPrintCR.
+ ('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
+ ex proceed
] do:[
- aDebugger := self new.
+ aDebugger := self new.
].
aDebugger isNil ifTrue:[
- 'DebugView [error]: cannot open debugger' errorPrintCR.
- 'DebugView [error]: Exception: ' errorPrint. aString errorPrintCR.
- mayProceed ifTrue:[
- (Dialog confirm:'Error/Breakpoint cought.\\Press Continue or Abort.' withCRs
- yesLabel:'Continue' noLabel:'Abort')
- ifTrue:[
- ^ nil
- ].
- ] ifFalse:[
- self information:'Error cought.\\Press OK to abort the operation.' withCRs.
- ].
- AbortOperationRequest raise.
- "not reached"
+ 'DebugView [error]: cannot open debugger' errorPrintCR.
+ 'DebugView [error]: Exception: ' errorPrint. aString errorPrintCR.
+ mayProceed ifTrue:[
+ (Dialog confirm:'Error/Breakpoint cought.\\Press Continue or Abort.' withCRs
+ yesLabel:'Continue' noLabel:'Abort')
+ ifTrue:[
+ ^ nil
+ ].
+ ] ifFalse:[
+ self information:'Error cought.\\Press OK to abort the operation.' withCRs.
+ ].
+ AbortOperationRequest raise.
+ "not reached"
].
aDebugger mayProceed:mayProceed.
@@ -487,7 +492,7 @@
^ nil.
"
- nil halt
+ nil halt
"
"Modified: / 18.11.2001 / 00:29:23 / cg"
@@ -499,9 +504,9 @@
<context: #return>
^ self
- enter:(thisContext sender)
- withMessage:message
- mayProceed:true.
+ enter:(thisContext sender)
+ withMessage:message
+ mayProceed:true.
!
new
@@ -515,14 +520,14 @@
currentScreen := Screen current.
currentScreen notNil ifTrue:[
- (currentScreen suppressDebugger) ifTrue:[
- "/ no debuggers with that device - show an alertBox which aborts...
- ^ nil.
- ].
- (currentScreen mayOpenDebugger) ifFalse:[
- "/ no debugger on that device - but on the main screen
- currentScreen := Screen default.
- ].
+ (currentScreen suppressDebugger) ifTrue:[
+ "/ no debuggers with that device - show an alertBox which aborts...
+ ^ nil.
+ ].
+ (currentScreen mayOpenDebugger) ifFalse:[
+ "/ no debugger on that device - but on the main screen
+ currentScreen := Screen default.
+ ].
].
"
@@ -531,46 +536,46 @@
(because otherwise we would not get any events here ...
"
Processor activeProcessIsSystemProcess ifTrue:[
- ((debugger := CachedExclusive) isNil
- or:[debugger device ~~ currentScreen
- or:[currentScreen isNil
- or:[currentScreen isOpen not]]]) ifTrue:[
- debugger := self newExclusive
- ].
- CachedExclusive := nil.
+ ((debugger := CachedExclusive) isNil
+ or:[debugger device ~~ currentScreen
+ or:[currentScreen isNil
+ or:[currentScreen isOpen not]]]) ifTrue:[
+ debugger := self newExclusive
+ ].
+ CachedExclusive := nil.
] ifFalse:[
- CachedDebugger notNil ifTrue:[
- (CachedDebugger device ~~ currentScreen
- or:[currentScreen isNil
- or:[currentScreen isOpen not
- or:[CachedDebugger class ~~ self]]]) ifTrue:[
- CachedDebugger := nil
- ]
- ].
-
- (debugger := CachedDebugger) notNil ifTrue:[
- CachedDebugger := nil.
- ] ifFalse:[
- debuggerDevice := currentScreen.
- debuggerDevice isNil ifTrue:[
- "/ use the default display
- debuggerDevice := Screen default.
- ].
- (debuggerDevice isNil
- or:[debuggerDevice isOpen not
- "/ or:[debuggerDevice mayOpenDebugger not]
- ]) ifTrue:[
- "/ no debugger
- ^ nil.
- ].
-
- Screen currentScreenQuerySignal answer:debuggerDevice
- do:[
- debugger := super new.
- ].
- debugger label:'Debugger'.
- debugger icon:self defaultIcon.
- ]
+ CachedDebugger notNil ifTrue:[
+ (CachedDebugger device ~~ currentScreen
+ or:[currentScreen isNil
+ or:[currentScreen isOpen not
+ or:[CachedDebugger class ~~ self]]]) ifTrue:[
+ CachedDebugger := nil
+ ]
+ ].
+
+ (debugger := CachedDebugger) notNil ifTrue:[
+ CachedDebugger := nil.
+ ] ifFalse:[
+ debuggerDevice := currentScreen.
+ debuggerDevice isNil ifTrue:[
+ "/ use the default display
+ debuggerDevice := Screen default.
+ ].
+ (debuggerDevice isNil
+ or:[debuggerDevice isOpen not
+ "/ or:[debuggerDevice mayOpenDebugger not]
+ ]) ifTrue:[
+ "/ no debugger
+ ^ nil.
+ ].
+
+ Screen currentScreenQuerySignal answer:debuggerDevice
+ do:[
+ debugger := super new.
+ ].
+ debugger label:'Debugger'.
+ debugger icon:self defaultIcon.
+ ]
].
^ debugger
@@ -600,15 +605,15 @@
aDebugger := super new.
aDebugger icon:self defaultIcon.
aProcess notNil ifTrue:[
- nm := aProcess name.
- nm notNil ifTrue:[
- nm := (nm contractTo:17) , '-' , aProcess id printString
- ] ifFalse:[
- nm := aProcess id printString
- ].
- label := 'Debugger [' , nm , ']'.
+ nm := aProcess name.
+ nm notNil ifTrue:[
+ nm := (nm contractTo:17) , '-' , aProcess id printString
+ ] ifFalse:[
+ nm := aProcess id printString
+ ].
+ label := 'Debugger [' , nm , ']'.
] ifFalse:[
- label := 'no process'
+ label := 'no process'
].
aDebugger label:label iconLabel:'Debugger'.
aDebugger openOn:aProcess.
@@ -635,386 +640,398 @@
^
#(Menu
- (
- (MenuItem
- label: 'File'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- enabled: canSendEmail
- label: 'Report a Bug via eMail...'
- itemValue: doOpenReportMailApp
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Exit'
- itemValue: closeRequest
- translateLabel: true
- isVisible: isInspecting
- )
- (MenuItem
- label: 'Close Debugger and Abort'
- itemValue: closeRequest
- translateLabel: true
- isVisible: isNotInspecting
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'View'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- enabled: canShowMore
- label: 'Show More WalkBack'
- itemValue: showMore
- translateLabel: true
- )
- (MenuItem
- label: 'Show Verbose WalkBack'
- itemValue: toggleVerboseWalkback
- translateLabel: true
- isVisible: showingDenseWalkback
- )
- (MenuItem
- label: 'Show Dense WalkBack'
- itemValue: toggleVerboseWalkback
- translateLabel: true
- isVisible: showingVerboseWalkback
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Raise Debugger when Entering'
- itemValue: autoRaiseView:
- translateLabel: true
- indication: autoRaiseView
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Settings...'
- itemValue: openSettingsDialog
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Process'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Continue'
- itemValue: doContinue
- translateLabel: true
- )
- (MenuItem
- label: 'Next (Line-Step)'
- itemValue: doNext
- translateLabel: true
- )
- (MenuItem
- label: 'Step'
- itemValue: doStep
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Abort'
- itemValue: doAbort
- translateLabel: true
- )
- (MenuItem
- enabled: abortAllIsHandled
- label: 'Abort All'
- itemValue: doAbortAll
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Terminate'
- itemValue: doTerminate
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Context'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- enabled: canReturn
- label: 'Return'
- itemValue: doReturn
- translateLabel: true
- )
- (MenuItem
- enabled: canRestart
- label: 'Restart'
- itemValue: doRestart
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: hasContextSelected
- label: 'Inspect'
- itemValue: inspectContext
- translateLabel: true
- )
- (MenuItem
- label: 'Copy WalkBack Text'
- itemValue: copyWalkbackText
- translateLabel: true
- )
- (MenuItem
- label: 'Bookmark Method in SystemBrowser'
- itemValue: addBrowserBookmark
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Class'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- enabled: canBrowseImplementingClass
- label: 'Browse Implementing Class'
- itemValue: browseImplementingClass
- translateLabel: true
- )
- (MenuItem
- enabled: canBrowseReceiversClass
- label: 'Browse Receivers Class'
- itemValue: browseReceiversClass
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: canBrowseClassHierarchy
- label: 'Browse Receivers Class Hierarchy'
- itemValue: browseClassHierarchy
- translateLabel: true
- )
- (MenuItem
- enabled: canBrowseFullClassProtocol
- label: 'Browse Receivers Full Protocol'
- itemValue: browseFullClassProtocol
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: canBrowseProcessesApplication
- label: 'Browse Application Class'
- itemValue: browseProcessesApplication
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Selector'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Browse Implementors...'
- itemValue: browseImplementorsOf
- translateLabel: true
- )
- (MenuItem
- label: 'Browse Senders...'
- itemValue: browseSendersOf
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: canDefineMethod
- label: 'Define Missing Method'
- itemValue: doDefineMethod
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Breakpoint'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- enabled: canRemoveBreakpoint
- label: 'Remove Breakpoint'
- itemValue: removeBreakpoint
- translateLabel: true
- )
- (MenuItem
- label: 'Remove all Breakpoints'
- itemValue: removeAllBreakpoints
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: canAddBreakpoint
- label: 'Add Breakpoint'
- itemValue: addBreakpoint
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Ignore this Halt/BreakPoint'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
- label: 'For Some Time...'
- itemValue: openIgnoreHaltUntilTimeElapsedDialog
- translateLabel: true
- )
- (MenuItem
- enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
- label: 'For the Next N Times...'
- itemValue: openIgnoreHaltNTimesDialog
- translateLabel: true
- )
- (MenuItem
- enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
- label: 'Forever (Until Ignoring is Stopped)'
- itemValue: ignoreHaltForever
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Ignore all Halts/BreakPoints'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- label: 'For Some Time...'
- itemValue: openIgnoreAllHaltsUntilTimeElapsedDialog
- translateLabel: true
- )
- (MenuItem
- label: 'Forever (Until Ignoring is Stopped)'
- itemValue: ignoreAllHaltsForever
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- enabled: hasHaltsToIgnore
- label: 'Stop Ignoring'
- itemValue: stopIgnoringHalts
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Manage Breakpoints'
- itemValue: openBreakPointBrowser
- translateLabel: true
- )
- (MenuItem
- label: 'Allow Breakpoints in Debugger'
- itemValue: allowBreakPointsInDebugger:
- translateLabel: true
- indication: allowBreakPointsInDebugger
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Help'
- translateLabel: true
- startGroup: right
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Debuggers Documentation'
- itemValue: openHTMLDocument:
- translateLabel: true
- argument: 'tools/debugger/TOP.html'
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'About DebugView...'
- itemValue: openAboutThisApplication
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- )
- nil
- nil
+ (
+ (MenuItem
+ label: 'File'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ enabled: canSendEmail
+ label: 'Report a Bug via eMail...'
+ itemValue: doOpenReportMailApp
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Exit'
+ itemValue: closeRequest
+ translateLabel: true
+ isVisible: isInspecting
+ )
+ (MenuItem
+ label: 'Close Debugger and Abort'
+ itemValue: closeRequest
+ translateLabel: true
+ isVisible: isNotInspecting
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'View'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ enabled: canShowMore
+ label: 'Show More WalkBack'
+ itemValue: showMore
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Show Verbose WalkBack'
+ itemValue: toggleVerboseWalkback
+ translateLabel: true
+ isVisible: showingDenseWalkback
+ )
+ (MenuItem
+ label: 'Show Dense WalkBack'
+ itemValue: toggleVerboseWalkback
+ translateLabel: true
+ isVisible: showingVerboseWalkback
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Raise Debugger when Entering'
+ itemValue: autoRaiseView:
+ translateLabel: true
+ indication: autoRaiseView
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Settings...'
+ itemValue: openSettingsDialog
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Process'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Continue'
+ itemValue: doContinue
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Next (Line-Step)'
+ itemValue: doNext
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Step'
+ itemValue: doStep
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Abort'
+ itemValue: doAbort
+ translateLabel: true
+ )
+ (MenuItem
+ enabled: abortAllIsHandled
+ label: 'Abort All'
+ itemValue: doAbortAll
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Terminate'
+ itemValue: doTerminate
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Context'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ enabled: canReturn
+ label: 'Return'
+ itemValue: doReturn
+ translateLabel: true
+ )
+ (MenuItem
+ enabled: canRestart
+ label: 'Restart'
+ itemValue: doRestart
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ enabled: hasContextSelected
+ label: 'Inspect'
+ itemValue: inspectContext
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Copy WalkBack Text'
+ itemValue: copyWalkbackText
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Bookmark Method in SystemBrowser'
+ itemValue: addBrowserBookmark
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Class'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ enabled: canBrowseImplementingClass
+ label: 'Browse Implementing Class'
+ itemValue: browseImplementingClass
+ translateLabel: true
+ )
+ (MenuItem
+ enabled: canBrowseReceiversClass
+ label: 'Browse Receivers Class'
+ itemValue: browseReceiversClass
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ enabled: canBrowseClassHierarchy
+ label: 'Browse Receivers Class Hierarchy'
+ itemValue: browseClassHierarchy
+ translateLabel: true
+ )
+ (MenuItem
+ enabled: canBrowseFullClassProtocol
+ label: 'Browse Receivers Full Protocol'
+ itemValue: browseFullClassProtocol
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ enabled: canBrowseProcessesApplication
+ label: 'Browse Application Class'
+ itemValue: browseProcessesApplication
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Selector'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Browse Implementors...'
+ itemValue: browseImplementorsOf
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Browse Senders...'
+ itemValue: browseSendersOf
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ enabled: canDefineMethod
+ label: 'Define Missing Method'
+ itemValue: doDefineMethod
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Breakpoint'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ enabled: canRemoveBreakpoint
+ label: 'Remove Breakpoint'
+ itemValue: removeBreakpoint
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Remove all Breakpoints'
+ itemValue: removeAllBreakpoints
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ enabled: canAddBreakpoint
+ label: 'Add Breakpoint'
+ itemValue: addBreakpoint
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Ignore this Halt/BreakPoint'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
+ label: 'For Some Time...'
+ itemValue: openIgnoreHaltUntilTimeElapsedDialog
+ translateLabel: true
+ )
+ (MenuItem
+ enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
+ label: 'For the Next N Times...'
+ itemValue: openIgnoreHaltNTimesDialog
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Until Shift-Key is Pressed'
+ itemValue: ignoreHaltUntilShiftKeyIsPressed
+ translateLabel: true
+ )
+ (MenuItem
+ enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
+ label: 'Forever (Until Ignoring is Stopped)'
+ itemValue: ignoreHaltForever
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Ignore all Halts/BreakPoints'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'For Some Time...'
+ itemValue: openIgnoreAllHaltsUntilTimeElapsedDialog
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Until Shift-Key is Pressed'
+ itemValue: ignoreAllHaltsUntilShiftKeyIsPressed
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Forever (Until Ignoring is Stopped)'
+ itemValue: ignoreAllHaltsForever
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ enabled: hasHaltsToIgnore
+ label: 'Stop Ignoring'
+ itemValue: stopIgnoringHalts
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Manage Breakpoints'
+ itemValue: openBreakPointBrowser
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Allow Breakpoints in Debugger'
+ itemValue: allowBreakPointsInDebugger:
+ translateLabel: true
+ indication: allowBreakPointsInDebugger
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Help'
+ translateLabel: true
+ startGroup: right
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Debuggers Documentation'
+ itemValue: openHTMLDocument:
+ translateLabel: true
+ argument: 'tools/debugger/TOP.html'
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'About DebugView...'
+ itemValue: openAboutThisApplication
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ )
+ nil
+ nil
)
+
+ "Modified: / 27-01-2012 / 11:29:45 / cg"
! !
!DebugView class methodsFor:'misc'!
@@ -1032,9 +1049,9 @@
con := aContext.
idx := 1.
[(idx <= someContexts size) and:[con notNil]] whileTrue:[
- someContexts at:idx put:con.
- con := con sender.
- idx := idx + 1.
+ someContexts at:idx put:con.
+ con := con sender.
+ idx := idx + 1.
].
idx := self interestingContextIndexIn:someContexts.
^ someContexts at:idx.
@@ -1284,30 +1301,30 @@
m := contextView middleButtonMenu.
m notNil ifTrue:[
- self updateMenuItems.
-
- (inspecting or:[AbortOperationRequest isHandled]) ifTrue:[
- abortButton enable.
- m enable:#doAbort.
- ] ifFalse:[
- abortButton disable.
- m disable:#doAbort.
- ].
- exclusive ifTrue:[
- terminateButton disable.
- m disable:#doTerminate.
- ] ifFalse:[
- terminateButton enable.
- m enable:#doTerminate.
- ]
+ self updateMenuItems.
+
+ (inspecting or:[AbortOperationRequest isHandled]) ifTrue:[
+ abortButton enable.
+ m enable:#doAbort.
+ ] ifFalse:[
+ abortButton disable.
+ m disable:#doAbort.
+ ].
+ exclusive ifTrue:[
+ terminateButton disable.
+ m disable:#doTerminate.
+ ] ifFalse:[
+ terminateButton enable.
+ m enable:#doTerminate.
+ ]
].
mayProceed == false ifTrue:[
- continueButton disable.
- m notNil ifTrue:[m disable:#doContinue].
+ continueButton disable.
+ m notNil ifTrue:[m disable:#doContinue].
] ifFalse:[
- continueButton enable.
- m notNil ifTrue:[m enable:#doContinue]
+ continueButton enable.
+ m notNil ifTrue:[m enable:#doContinue]
].
"Created: / 16.11.2001 / 17:40:51 / cg"
@@ -1322,46 +1339,46 @@
|con m enteredByInterrupt sel iAmNew foundNoByteCodeContext foundExitContext c|
DebuggingDebugger == true ifTrue:[
- '==> enter: (' print. aContext print.
- ') select: ' print. initialSelectionOrNil printCR.
+ '==> enter: (' print. aContext print.
+ ') select: ' print. initialSelectionOrNil printCR.
].
thisContext isRecursive ifTrue:[
- "/ care for the special case, were the Debugger was autoloaded.
- "/ in this case, thisContext IS recursive, but thats no error
- "/ condition.
- foundNoByteCodeContext := false.
- foundExitContext := false.
-
- c := thisContext findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
- [
- foundNoByteCodeContext not
- and:[ foundExitContext not
- and:[c notNil
- and:[c selector ~~ #enter:withMessage:mayProceed:
- ]]]]
- whileTrue:[
- c selector == #exit_unwindThenDo: ifTrue:[
- foundExitContext := true
- ].
- c selector == #noByteCode ifTrue:[
- foundNoByteCodeContext := true
- ].
- c := c findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
- ].
-
- (foundNoByteCodeContext not
- and:[ foundExitContext not]) ifFalse:[
- ('DebugView [warning]: reentered') errorPrintCR.
-
- ^ MiniDebugger
- enter:aContext
- withMessage:'DebugView [error]: recursive error (in debugger)'
- mayProceed:mayProceed.
- ].
- foundExitContext ifTrue:[
- 'DebugView [error]: recursive error (in debugger) ignored' printCR.
- ^ self.
- ].
+ "/ care for the special case, were the Debugger was autoloaded.
+ "/ in this case, thisContext IS recursive, but thats no error
+ "/ condition.
+ foundNoByteCodeContext := false.
+ foundExitContext := false.
+
+ c := thisContext findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
+ [
+ foundNoByteCodeContext not
+ and:[ foundExitContext not
+ and:[c notNil
+ and:[c selector ~~ #enter:withMessage:mayProceed:
+ ]]]]
+ whileTrue:[
+ c selector == #exit_unwindThenDo: ifTrue:[
+ foundExitContext := true
+ ].
+ c selector == #noByteCode ifTrue:[
+ foundNoByteCodeContext := true
+ ].
+ c := c findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
+ ].
+
+ (foundNoByteCodeContext not
+ and:[ foundExitContext not]) ifFalse:[
+ ('DebugView [warning]: reentered') errorPrintCR.
+
+ ^ MiniDebugger
+ enter:aContext
+ withMessage:'DebugView [error]: recursive error (in debugger)'
+ mayProceed:mayProceed.
+ ].
+ foundExitContext ifTrue:[
+ 'DebugView [error]: recursive error (in debugger) ignored' printCR.
+ ^ self.
+ ].
].
"/'entering: ' print. aContext printCR.
@@ -1369,7 +1386,7 @@
thisContext sender fixAllLineNumbers. "/ _CONTEXTLINENOS(s)
self class isHaltToBeIgnored ifTrue:[
- ^ self.
+ ^ self.
].
iAmNew := drawableId isNil.
@@ -1392,45 +1409,45 @@
"/ but not for multi-user development, where the debugger is entered often.
"/ What is a good solution to this dilemma ?
Screen allScreens do:[:aScreen |
- aScreen ungrabPointer.
- aScreen ungrabKeyboard.
+ aScreen ungrabPointer.
+ aScreen ungrabKeyboard.
].
("inspectedProcess suspendedContext isNil
or:["inspectedProcess isSystemProcess"]") ifTrue:[
- terminateButton disable.
+ terminateButton disable.
] ifFalse:[
- terminateButton enable.
- abortButton enable.
+ terminateButton enable.
+ abortButton enable.
].
iAmNew ifFalse:[
- "/ not the first time - disable buttons & menus
- "/ from the previous life
- self turnOffAllButtons.
-
- m := contextView middleButtonMenu.
- m notNil ifTrue:[
- m disableAll:#(showMore "skip skipForReturn" inspectContext).
- ].
- verboseBacktrace
- ifTrue:[self showVerboseWalkback]
- ifFalse:[self showDenseWalkback].
+ "/ not the first time - disable buttons & menus
+ "/ from the previous life
+ self turnOffAllButtons.
+
+ m := contextView middleButtonMenu.
+ m notNil ifTrue:[
+ m disableAll:#(showMore "skip skipForReturn" inspectContext).
+ ].
+ verboseBacktrace
+ ifTrue:[self showVerboseWalkback]
+ ifFalse:[self showDenseWalkback].
].
self iconLabel:'Debugger'.
windowGroup isNil ifTrue:[
- self windowGroup: WindowGroup new.
- windowGroup addTopView:self.
+ self windowGroup: WindowGroup new.
+ windowGroup addTopView:self.
].
exclusive ifFalse:[
- "/ create a (modal) windowGroup for myself
-
- windowGroup setModal:true.
+ "/ create a (modal) windowGroup for myself
+
+ windowGroup setModal:true.
] ifTrue:[
- "/ create a windowGroup with a synchronous sensor for me
-
- windowGroup beSynchronous.
+ "/ create a windowGroup with a synchronous sensor for me
+
+ windowGroup beSynchronous.
].
windowGroup setProcess:Processor activeProcess.
"
@@ -1450,14 +1467,14 @@
position again
"
iAmNew ifFalse:[
- self remap.
+ self remap.
] ifTrue:[
- self realize.
+ self realize.
].
self setForegroundWindow.
exclusive ifTrue:[
- self showError:'
+ self showError:'
Debugging system process `' , (inspectedProcess nameOrId) printString , '''.
This is a modal debugger - all event processing is stopped..
@@ -1468,9 +1485,9 @@
].
self autoRaiseView ifTrue:[
- "/ self raise.
- self raiseDeiconified.
- self topView activate; setForegroundWindow; activate.
+ "/ self raise.
+ self raiseDeiconified.
+ self topView activate; setForegroundWindow; activate.
].
canContinue := true.
@@ -1480,10 +1497,10 @@
"/ when any button was pressed which requires continuation of the debuggee or
"/ closedown of the debugger.
[self controlLoop] ifCurtailed:[
- windowGroup notNil ifTrue:[
- windowGroup setProcess:nil.
- ].
- self destroy
+ windowGroup notNil ifTrue:[
+ windowGroup setProcess:nil.
+ ].
+ self destroy
].
"/ here after my own control loop is finished.
@@ -1497,31 +1514,31 @@
codeView doItAction:nil.
ObjectMemory stepInterruptHandler == self ifTrue:[
- ObjectMemory stepInterruptHandler:nil.
+ ObjectMemory stepInterruptHandler:nil.
].
(exitAction ~~ #step) ifTrue:[
- "/ not stepping - close window
- lastSelectionInReceiverInspector := receiverInspector selectedKeyName.
- lastSelectionInContextInspector := contextInspector selectedKeyName.
- receiverInspector release.
- contextInspector release.
-
- self unmap.
- device flush.
-
- (exitAction == #abort) ifTrue:[ self exit_abort. "does not return" ].
- (exitAction == #abortAll) ifTrue:[ self exit_abortAll. "does not return" ].
- (exitAction == #return) ifTrue:[ self exit_return. "does not return" ].
- (exitAction == #restart) ifTrue:[ self exit_restart. "does not return" ].
- (exitAction == #quickTerminate) ifTrue:[ self exit_quickTerminate. "does not return" ].
- (exitAction == #terminate) ifTrue:[ self exit_terminate. "does not return" ].
- exitAction isBlock ifTrue:[
- self exit_unwindThenDo:exitAction.
- "does not return"
- ].
- "not reached"
- ^ self
+ "/ not stepping - close window
+ lastSelectionInReceiverInspector := receiverInspector selectedKeyName.
+ lastSelectionInContextInspector := contextInspector selectedKeyName.
+ receiverInspector release.
+ contextInspector release.
+
+ self unmap.
+ device flush.
+
+ (exitAction == #abort) ifTrue:[ self exit_abort. "does not return" ].
+ (exitAction == #abortAll) ifTrue:[ self exit_abortAll. "does not return" ].
+ (exitAction == #return) ifTrue:[ self exit_return. "does not return" ].
+ (exitAction == #restart) ifTrue:[ self exit_restart. "does not return" ].
+ (exitAction == #quickTerminate) ifTrue:[ self exit_quickTerminate. "does not return" ].
+ (exitAction == #terminate) ifTrue:[ self exit_terminate. "does not return" ].
+ exitAction isBlock ifTrue:[
+ self exit_unwindThenDo:exitAction.
+ "does not return"
+ ].
+ "not reached"
+ ^ self
].
"/ stepping - window stays open
@@ -1529,96 +1546,96 @@
"/ restore the previous pointer grab
grabber notNil ifTrue:[
- device grabPointerInView:grabber.
- grabber := nil.
+ device grabPointerInView:grabber.
+ grabber := nil.
].
(exitAction == #step) ifTrue:[
- "
- schedule another stepInterrupt
- - must enter myself into the collection of open debuggers,
- in case the stepping process comes back again via a halt or signal
- before the step is finished. In this case, the stepping debugger should
- come up (instead of a new one)
- - must flush caches since optimized methods not always
- look for pending interrupts
- "
-
- "/
- "/ also must care for stepping into a return
- "/
- steppedContext notNil ifTrue:[
- Processor activeProcess forceInterruptOnReturnOf:steppedContext.
- ].
-
- OpenDebuggers isNil ifTrue:[
- OpenDebuggers := WeakIdentitySet new.
- ].
- OpenDebuggers add:self.
-
- self label:'single stepping - please wait ...'.
- stepping := true.
-
- ObjectMemory stepInterruptHandler:self.
- Processor activeProcess stepInterruptHandler:self.
- ObjectMemory flushCaches.
-
- Context singleStepInterruptRequest isHandled ifTrue:[
- Context singleStepInterruptRequest
- raiseWith:
- (("bigStep" steppedContextLineno notNil)
- ifTrue:[#next]
- ifFalse:[#step])
- ] ifFalse:[
- "/ see if we came here through an interrupt-action
- "/ (i.e. aProcess interruptWith:...)
-
- enteredByInterrupt := false.
- con := thisContext findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
- [enteredByInterrupt not
- and:[con notNil
- and:[con ~~ aContext]]] whileTrue:[
- ((sel := con selector) == #timerInterrupt
- or:[sel == #ioInterrupt]) ifTrue:[
- enteredByInterrupt := true.
- ] ifFalse:[
- con := con findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
- ].
- ].
-
- ObjectMemory flushInlineCaches.
-
- DebuggingDebugger == true ifTrue:[
- enteredByInterrupt printCR.
- ].
- enteredByInterrupt ifTrue:[
- "/ dont want to step through all intermediate
- "/ (scheduler-) contexts; place a return-trap on the
- "/ one right below the interesting one
+ "
+ schedule another stepInterrupt
+ - must enter myself into the collection of open debuggers,
+ in case the stepping process comes back again via a halt or signal
+ before the step is finished. In this case, the stepping debugger should
+ come up (instead of a new one)
+ - must flush caches since optimized methods not always
+ look for pending interrupts
+ "
+
+ "/
+ "/ also must care for stepping into a return
+ "/
+ steppedContext notNil ifTrue:[
+ Processor activeProcess forceInterruptOnReturnOf:steppedContext.
+ ].
+
+ OpenDebuggers isNil ifTrue:[
+ OpenDebuggers := WeakIdentitySet new.
+ ].
+ OpenDebuggers add:self.
+
+ self label:'single stepping - please wait ...'.
+ stepping := true.
+
+ ObjectMemory stepInterruptHandler:self.
+ Processor activeProcess stepInterruptHandler:self.
+ ObjectMemory flushCaches.
+
+ Context singleStepInterruptRequest isHandled ifTrue:[
+ Context singleStepInterruptRequest
+ raiseWith:
+ (("bigStep" steppedContextLineno notNil)
+ ifTrue:[#next]
+ ifFalse:[#step])
+ ] ifFalse:[
+ "/ see if we came here through an interrupt-action
+ "/ (i.e. aProcess interruptWith:...)
+
+ enteredByInterrupt := false.
+ con := thisContext findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
+ [enteredByInterrupt not
+ and:[con notNil
+ and:[con ~~ aContext]]] whileTrue:[
+ ((sel := con selector) == #timerInterrupt
+ or:[sel == #ioInterrupt]) ifTrue:[
+ enteredByInterrupt := true.
+ ] ifFalse:[
+ con := con findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
+ ].
+ ].
+
+ ObjectMemory flushInlineCaches.
+
+ DebuggingDebugger == true ifTrue:[
+ enteredByInterrupt printCR.
+ ].
+ enteredByInterrupt ifTrue:[
+ "/ dont want to step through all intermediate
+ "/ (scheduler-) contexts; place a return-trap on the
+ "/ one right below the interesting one
"/ 'special unwind return' printCR.
- con unwindThenDo:[
- Processor activeProcess stepInterruptHandler:self.
- ObjectMemory stepInterruptHandler:self.
- InStepInterrupt := nil.
- StepInterruptPending := 1.
- InterruptPending := 1].
- ] ifFalse:[
+ con unwindThenDo:[
+ Processor activeProcess stepInterruptHandler:self.
+ ObjectMemory stepInterruptHandler:self.
+ InStepInterrupt := nil.
+ StepInterruptPending := 1.
+ InterruptPending := 1].
+ ] ifFalse:[
"/ 'normal step return' printCR.
- skipLineNr ~~ #return ifTrue:[
- StepInterruptPending := 1.
- InterruptPending := 1.
- ] ifFalse:[
+ skipLineNr ~~ #return ifTrue:[
+ StepInterruptPending := 1.
+ InterruptPending := 1.
+ ] ifFalse:[
"/ 'step for return' printCR.
- ]
- ].
- InStepInterrupt := nil
- ]
+ ]
+ ].
+ InStepInterrupt := nil
+ ]
] ifFalse:[
- OpenDebuggers notNil ifTrue:[
- OpenDebuggers remove:self ifAbsent:[].
- ].
- self cacheMyself.
+ OpenDebuggers notNil ifTrue:[
+ OpenDebuggers remove:self ifAbsent:[].
+ ].
+ self cacheMyself.
]
"Modified: / 17-04-1997 / 13:01:32 / stefan"
@@ -1663,19 +1680,19 @@
|con|
selectedContext notNil ifTrue:[
- con := selectedContext.
- self cacheMyself.
- "
- have to catch errors occuring in unwind-blocks
- "
- Error handle:[:ex |
- 'DebugView [info]: ignored error while unwinding: ' infoPrint.
- ex description infoPrintCR.
- ex proceed
- ] do:[
- con unwindAndRestart.
- ].
- 'DebugView [warning]: cannot restart selected context' errorPrintCR
+ con := selectedContext.
+ self cacheMyself.
+ "
+ have to catch errors occuring in unwind-blocks
+ "
+ Error handle:[:ex |
+ 'DebugView [info]: ignored error while unwinding: ' infoPrint.
+ ex description infoPrintCR.
+ ex proceed
+ ] do:[
+ con unwindAndRestart.
+ ].
+ 'DebugView [warning]: cannot restart selected context' errorPrintCR
]
"Created: / 16.11.2001 / 17:23:17 / cg"
@@ -1686,10 +1703,10 @@
|con retVal|
selectedContext notNil ifTrue:[
- "
- if there is a selection in the codeView,
- evaluate it and use the result as return value
- "
+ "
+ if there is a selection in the codeView,
+ evaluate it and use the result as return value
+ "
"/ disabled for now, there is almost always a selection (the current line)
"/ and that is syntactically incorrect ...
"/ ... leading to a popup warning from the codeView
@@ -1707,19 +1724,19 @@
"/ ].
"/ ].
- con := selectedContext.
- self cacheMyself.
- "
- have to catch errors occuring in unwind-blocks
- "
- Error handle:[:ex |
- 'DebugView [info]: ignored error while unwinding: ' infoPrint.
- ex description infoPrintCR.
- ex proceed
- ] do:[
- con unwind:retVal.
- ].
- 'DebugView [warning]: cannot return from selected context' errorPrintCR
+ con := selectedContext.
+ self cacheMyself.
+ "
+ have to catch errors occuring in unwind-blocks
+ "
+ Error handle:[:ex |
+ 'DebugView [info]: ignored error while unwinding: ' infoPrint.
+ ex description infoPrintCR.
+ ex proceed
+ ] do:[
+ con unwind:retVal.
+ ].
+ 'DebugView [warning]: cannot return from selected context' errorPrintCR
]
"Created: / 16.11.2001 / 17:22:24 / cg"
@@ -1732,12 +1749,12 @@
have to catch errors occuring in unwind-blocks
"
Error handle:[:ex |
- 'DebugView [info]: ignored error while unwinding: ' infoPrint.
- ex description infoPrintCR.
- ex proceed
+ 'DebugView [info]: ignored error while unwinding: ' infoPrint.
+ ex description infoPrintCR.
+ ex proceed
] do:[
- self cacheMyself.
- Processor activeProcess terminate.
+ self cacheMyself.
+ Processor activeProcess terminate.
].
'DebugView [warning]: cannot terminate process' errorPrintCR
@@ -1762,31 +1779,31 @@
self cacheMyself.
Error handle:[:ex |
- 'DebugView [info]: ignored error while unwinding: ' infoPrint.
- ex description infoPrintCR.
-
- ex proceed
+ 'DebugView [info]: ignored error while unwinding: ' infoPrint.
+ ex description infoPrintCR.
+
+ ex proceed
] do:[
- "/ find the enter:select context.
- con := thisContext sender.
- [
- (con selector == #enter:select:)
- and:[con receiver == self]
- ]
- whileFalse:[ con := con sender ].
-
- "/ must skip over its caller (because this one has a ControlInterrupt handler too)
- con sender receiver == self class ifTrue:[
- con := con sender.
- con sender receiver == self class ifTrue:[
- con := con sender.
- con isBlockContext ifTrue:[
- con := con methodHome.
- ]
- ].
- ].
-
- con unwindThenDo:aBlock.
+ "/ find the enter:select context.
+ con := thisContext sender.
+ [
+ (con selector == #enter:select:)
+ and:[con receiver == self]
+ ]
+ whileFalse:[ con := con sender ].
+
+ "/ must skip over its caller (because this one has a ControlInterrupt handler too)
+ con sender receiver == self class ifTrue:[
+ con := con sender.
+ con sender receiver == self class ifTrue:[
+ con := con sender.
+ con isBlockContext ifTrue:[
+ con := con methodHome.
+ ]
+ ].
+ ].
+
+ con unwindThenDo:aBlock.
].
'DebugView [warning]: abort failed' errorPrintCR
@@ -1798,7 +1815,7 @@
|selection con1 con2 h|
initialSelectionOrNil notNil ifTrue:[
- ^ initialSelectionOrNil
+ ^ initialSelectionOrNil
].
"
@@ -1813,54 +1830,54 @@
con2 := (contextArray at:2 ifAbsent:nil).
exitAction == #step ifTrue:[
- selection := 1.
- steppedContext notNil ifTrue:[
-
- "
- if we came here by a big-step, show the method where we are
- "
- con1 == steppedContext ifTrue:[
- selection := 1
- ] ifFalse:[
- con2 == steppedContext ifTrue:[
- selection := 2
- ]
- ].
- "
- for bigStep, we could also be in a block below the actual method ...
- "
- ((h := con1 home) notNil
- and:[h == steppedContext]) ifTrue:[
- selection := 1
- ] ifFalse:[
- (con2 notNil
- and:[(h := con2 home) notNil
- and:[h == steppedContext]]) ifTrue:[
- selection := 2
- ]
- ].
- h := nil.
- ]
+ selection := 1.
+ steppedContext notNil ifTrue:[
+
+ "
+ if we came here by a big-step, show the method where we are
+ "
+ con1 == steppedContext ifTrue:[
+ selection := 1
+ ] ifFalse:[
+ con2 == steppedContext ifTrue:[
+ selection := 2
+ ]
+ ].
+ "
+ for bigStep, we could also be in a block below the actual method ...
+ "
+ ((h := con1 home) notNil
+ and:[h == steppedContext]) ifTrue:[
+ selection := 1
+ ] ifFalse:[
+ (con2 notNil
+ and:[(h := con2 home) notNil
+ and:[h == steppedContext]]) ifTrue:[
+ selection := 2
+ ]
+ ].
+ h := nil.
+ ]
] ifFalse:[
- steppedContext isNil ifTrue:[
- "
- preselect a more interesting context, (where halt/raise was ...)
- "
- "/ selection := self class interestingContextIndexFrom:aContext.
- selection := self class interestingContextIndexIn:contextArray.
- selection := selection min:(contextArray size).
- ] ifFalse:[
- "
- if we came here by a big-step, show the method where we are
- "
- con1 == steppedContext ifTrue:[
- selection := 1
- ] ifFalse:[
- con2 == steppedContext ifTrue:[
- selection := 2.
- ]
- ]
- ]
+ steppedContext isNil ifTrue:[
+ "
+ preselect a more interesting context, (where halt/raise was ...)
+ "
+ "/ selection := self class interestingContextIndexFrom:aContext.
+ selection := self class interestingContextIndexIn:contextArray.
+ selection := selection min:(contextArray size).
+ ] ifFalse:[
+ "
+ if we came here by a big-step, show the method where we are
+ "
+ con1 == steppedContext ifTrue:[
+ selection := 1
+ ] ifFalse:[
+ con2 == steppedContext ifTrue:[
+ selection := 2.
+ ]
+ ]
+ ]
].
^ selection
@@ -1905,17 +1922,17 @@
continueButton preferredExtent:(w @ continueButton preferredHeight).
aProcess state == #run ifTrue:[
- device hasColors ifTrue:[
- continueButton foregroundColor:Color red darkened.
- ].
- continueButton label:(resources string:'Stop').
- continueButton action:[self doStop].
+ device hasColors ifTrue:[
+ continueButton foregroundColor:Color red darkened.
+ ].
+ continueButton label:(resources string:'Stop').
+ continueButton action:[self doStop].
] ifFalse:[
- device hasColors ifTrue:[
- continueButton foregroundColor:Color green darkened darkened.
- ].
- continueButton label:(resources string:'Continue').
- continueButton action:[self doContinue].
+ device hasColors ifTrue:[
+ continueButton foregroundColor:Color green darkened darkened.
+ ].
+ continueButton label:(resources string:'Continue').
+ continueButton action:[self doContinue].
].
continueButton preferredExtent:(w @ continueButton preferredHeight).
@@ -1929,9 +1946,9 @@
"/ sendButton destroy.
updateButton := Button
- label:(resources string:'Update')
- action:[self updateContext]
- in:bpanel.
+ label:(resources string:'Update')
+ action:[self updateContext]
+ in:bpanel.
monitorToggle := Toggle in:bpanel.
monitorToggle label:(resources string:'Monitor').
monitorToggle pressAction:[self autoUpdateOn].
@@ -1950,33 +1967,33 @@
nextOutButton notNil ifTrue:[nextOutButton disable; beInvisible].
aProcess isNil ifTrue:[
- terminateButton disable.
- abortButton disable.
- continueButton disable.
- returnButton disable.
- restartButton disable.
+ terminateButton disable.
+ abortButton disable.
+ continueButton disable.
+ returnButton disable.
+ restartButton disable.
] ifFalse:[
- (aProcess suspendedContext isNil
- or:[aProcess isSystemProcess]) ifTrue:[
- terminateButton disable.
- ].
-
- self setContextSkippingInterruptContexts:aProcess suspendedContext.
-
- catchBlock := [
- catchBlock := nil.
- contextArray := nil.
- selectedContext := actualContext := firstContext := nil.
- steppedContext := wrapperContext := nil.
-
- (exitAction == #terminate) ifTrue:[
- aProcess terminate.
- ].
- (exitAction == #quickTerminate) ifTrue:[
- aProcess terminateNoSignal.
- ].
- super destroy
- ].
+ (aProcess suspendedContext isNil
+ or:[aProcess isSystemProcess]) ifTrue:[
+ terminateButton disable.
+ ].
+
+ self setContextSkippingInterruptContexts:aProcess suspendedContext.
+
+ catchBlock := [
+ catchBlock := nil.
+ contextArray := nil.
+ selectedContext := actualContext := firstContext := nil.
+ steppedContext := wrapperContext := nil.
+
+ (exitAction == #terminate) ifTrue:[
+ aProcess terminate.
+ ].
+ (exitAction == #quickTerminate) ifTrue:[
+ aProcess terminateNoSignal.
+ ].
+ super destroy
+ ].
].
self open
@@ -1989,11 +2006,11 @@
selection := self initialSelectionOnEntry:initialSelectionOrNil context:aContext.
selection notNil ifTrue:[
- self showSelection:selection.
- contextView setSelection:selection.
- selection > 1 ifTrue:[
- contextView scrollToLine:(selection - 1)
- ]
+ self showSelection:selection.
+ contextView setSelection:selection.
+ selection > 1 ifTrue:[
+ contextView scrollToLine:(selection - 1)
+ ]
].
"Created: / 16.11.2001 / 17:28:07 / cg"
@@ -2026,50 +2043,50 @@
|s|
aComponent == abortButton ifTrue:[
- s := 'Abort (unwind to eventLoop)'
+ s := 'Abort (unwind to eventLoop)'
].
aComponent == terminateButton ifTrue:[
- s := 'Terminate process (close view)'
+ s := 'Terminate process (close view)'
].
aComponent == continueButton ifTrue:[
- continueButton label = (resources string:'Stop') ifTrue:[
- s := 'Stop'
- ] ifFalse:[
- s := 'Continue execution'
- ]
+ continueButton label = (resources string:'Stop') ifTrue:[
+ s := 'Stop'
+ ] ifFalse:[
+ s := 'Continue execution'
+ ]
].
aComponent == stepButton ifTrue:[
- s := 'Step to next send (don''t enter into called methods)'
+ s := 'Step to next send (don''t enter into called methods)'
].
aComponent == nextButton ifTrue:[
- s := 'Step to next line (don''t enter into called methods)'
+ s := 'Step to next line (don''t enter into called methods)'
].
aComponent == nextOverButton ifTrue:[
- s := 'Step over to cursor-line'
+ s := 'Step over to cursor-line'
].
aComponent == nextOutButton ifTrue:[
- s := 'Step out to caller'
+ s := 'Step out to caller'
].
aComponent == sendButton ifTrue:[
- s := 'Send next message (enter into called methods)'
+ s := 'Send next message (enter into called methods)'
].
aComponent == returnButton ifTrue:[
- s := 'Return from selected method'
+ s := 'Return from selected method'
].
aComponent == restartButton ifTrue:[
- s := 'Restart selected method'
+ s := 'Restart selected method'
].
aComponent == monitorToggle ifTrue:[
- s := 'Toggle monitoring'
+ s := 'Toggle monitoring'
].
aComponent == updateButton ifTrue:[
- s := 'Update'
+ s := 'Update'
].
aComponent == reportButton ifTrue:[
- s := 'Send a defect report via eMail'
+ s := 'Send a defect report via eMail'
].
s notNil ifTrue:[
- ^ resources string:s
+ ^ resources string:s
].
^ nil
@@ -2092,47 +2109,47 @@
interval := pos to:pos.
self
- withNodeValueAtInterval:interval
- do:[:value :description |
- |valueClassOrSizeString valueString|
-
- valueClassOrSizeString := valueString := ''.
-
- "/ some heuristics as when to show the class name (a purely subjective preference)
- value isString ifTrue:[
- value isText ifTrue:[
- valueString := '"',(value contractTo:80),'"'.
- ] ifFalse:[
- valueString := value storeString contractTo:80.
- ].
- ] ifFalse:[
- (value isBoolean
- or:[ value isInteger
- or:[ value isSymbol ]]) ifTrue:[
- valueString := value printString.
- ] ifFalse:[
- valueClassOrSizeString := ' (',value class name,')'.
-
- (value isArray
- or:[ value isOrderedCollection ]) ifTrue:[
- valueClassOrSizeString := ' (size=',value size printString,')'.
- ].
-
- Error handle:[:ex |
- valueString := '??? (',ex description,')'
- ] do:[
- [
- valueString := value printString contractTo:80.
- ] valueWithWatchDog:[ valueString := value classNameWithArticle ] afterMilliseconds:30.
- ]
- ]
- ].
- description isEmptyOrNil ifTrue:[
- s := valueString , valueClassOrSizeString
- ] ifFalse:[
- s := description , ': ', valueString, valueClassOrSizeString
- ].
- ].
+ withNodeValueAtInterval:interval
+ do:[:value :description |
+ |valueClassOrSizeString valueString|
+
+ valueClassOrSizeString := valueString := ''.
+
+ "/ some heuristics as when to show the class name (a purely subjective preference)
+ value isString ifTrue:[
+ value isText ifTrue:[
+ valueString := '"',(value contractTo:80),'"'.
+ ] ifFalse:[
+ valueString := value storeString contractTo:80.
+ ].
+ ] ifFalse:[
+ (value isBoolean
+ or:[ value isInteger
+ or:[ value isSymbol ]]) ifTrue:[
+ valueString := value printString.
+ ] ifFalse:[
+ valueClassOrSizeString := ' (',value class name,')'.
+
+ (value isArray
+ or:[ value isOrderedCollection ]) ifTrue:[
+ valueClassOrSizeString := ' (size=',value size printString,')'.
+ ].
+
+ Error handle:[:ex |
+ valueString := '??? (',ex description,')'
+ ] do:[
+ [
+ valueString := value printString contractTo:80.
+ ] valueWithWatchDog:[ valueString := value classNameWithArticle ] afterMilliseconds:30.
+ ]
+ ]
+ ].
+ description isEmptyOrNil ifTrue:[
+ s := valueString , valueClassOrSizeString
+ ] ifFalse:[
+ s := description , ': ', valueString, valueClassOrSizeString
+ ].
+ ].
"/ Transcript showCR:s.
^ s
@@ -2143,66 +2160,66 @@
|s|
aComponent == abortButton ifTrue:[
- s := 'HELP_ABORT'
+ s := 'HELP_ABORT'
].
aComponent == terminateButton ifTrue:[
- s := 'HELP_TERMINATE'
+ s := 'HELP_TERMINATE'
].
aComponent == continueButton ifTrue:[
- continueButton label = (resources string:'Stop') ifTrue:[
- s := 'HELP_STOP'
- ] ifFalse:[
- s := 'HELP_CONTINUE'
- ]
+ continueButton label = (resources string:'Stop') ifTrue:[
+ s := 'HELP_STOP'
+ ] ifFalse:[
+ s := 'HELP_CONTINUE'
+ ]
].
aComponent == stepButton ifTrue:[
- s := 'HELP_STEP'
+ s := 'HELP_STEP'
].
aComponent == nextButton ifTrue:[
- s := 'HELP_NEXT'
+ s := 'HELP_NEXT'
].
aComponent == nextOverButton ifTrue:[
- s := 'HELP_NEXTOVER'
+ s := 'HELP_NEXTOVER'
].
aComponent == nextOutButton ifTrue:[
- s := 'HELP_NEXTOUT'
+ s := 'HELP_NEXTOUT'
].
aComponent == stepButton ifTrue:[
- s := 'HELP_STEP'
+ s := 'HELP_STEP'
].
aComponent == sendButton ifTrue:[
- s := 'HELP_SEND'
+ s := 'HELP_SEND'
].
aComponent == returnButton ifTrue:[
- s := 'HELP_RETURN'
+ s := 'HELP_RETURN'
].
aComponent == restartButton ifTrue:[
- s := 'HELP_RESTART'
+ s := 'HELP_RESTART'
].
aComponent == contextView ifTrue:[
- s := 'HELP_WALKBACK'
+ s := 'HELP_WALKBACK'
].
aComponent == codeView ifTrue:[
- s := 'HELP_CODEVIEW'
+ s := 'HELP_CODEVIEW'
].
aComponent == monitorToggle ifTrue:[
- s := 'HELP_MONITOR'
+ s := 'HELP_MONITOR'
].
aComponent == updateButton ifTrue:[
- s := 'HELP_UPDATE'
+ s := 'HELP_UPDATE'
].
"/ aComponent == stopButton ifTrue:[
"/ s := 'HELP_STOP'
"/ ].
(aComponent isComponentOf:receiverInspector) ifTrue:[
- s := 'HELP_REC_INSP'
+ s := 'HELP_REC_INSP'
].
(aComponent isComponentOf:contextInspector) ifTrue:[
- s := 'HELP_CON_INSP'
+ s := 'HELP_CON_INSP'
].
s notNil ifTrue:[
- ^ resources string:s
+ ^ resources string:s
].
^ nil
@@ -2224,45 +2241,45 @@
|m|
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - exit anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - exit anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
self autoUpdateOff.
(m := contextView middleButtonMenu) notNil ifTrue:[m hide].
inspecting ifFalse:[
- "I am running on top of a process, abort or continue it"
-
- windowGroup notNil ifTrue:[
- windowGroup setProcess:nil.
- ].
- self uncacheMyself.
-
- "/
- "/ catch invalid return;
- "/ this happens, when my process has somehow died (quickterminate)
- "/ and I am a leftOver view, which gets terminated via the launchers
- "/ #destroy-window function.
- "/
- Context cannotReturnSignal handle:[:ex |
- 'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
- self uncacheMyself.
- Debugger newDebugger.
- ex return.
- ] do:[
- AbortOperationRequest isHandled ifTrue:[
- self doAbort.
- ] ifFalse:[
- self doContinue
- ]
- ].
- "/ We don't reach this point normally
- 'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
- Debugger newDebugger.
- self uncacheMyself.
+ "I am running on top of a process, abort or continue it"
+
+ windowGroup notNil ifTrue:[
+ windowGroup setProcess:nil.
+ ].
+ self uncacheMyself.
+
+ "/
+ "/ catch invalid return;
+ "/ this happens, when my process has somehow died (quickterminate)
+ "/ and I am a leftOver view, which gets terminated via the launchers
+ "/ #destroy-window function.
+ "/
+ Context cannotReturnSignal handle:[:ex |
+ 'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
+ self uncacheMyself.
+ Debugger newDebugger.
+ ex return.
+ ] do:[
+ AbortOperationRequest isHandled ifTrue:[
+ self doAbort.
+ ] ifFalse:[
+ self doContinue
+ ]
+ ].
+ "/ We don't reach this point normally
+ 'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
+ Debugger newDebugger.
+ self uncacheMyself.
].
Debugger newDebugger.
@@ -2284,7 +2301,7 @@
verboseBacktrace := UserPreferences current verboseBacktraceInDebugger.
ignoreBreakpoints := true. "/ ignore halts/breakpoints in doIts of
- "/ the debugger
+ "/ the debugger
busy := false.
exclusive := false.
@@ -2308,94 +2325,94 @@
newLayout := UserPreferences current useNewLayoutInDebugger.
newLayout ifFalse:[
- bpanel := HorizontalPanelView in:self.
-
- self initializeButtonsIn:bpanel.
-
- bH := bpanel preferredHeight + 5.
- bpanel origin:(0.0 @ mH)
- extent:(1.0 @ bH).
- panel := VariableVerticalPanel
- origin:(0.0 @ (mH + bH))
- corner:(1.0 @ 1.0)
- in:self.
-
- v := self initializeContextListViewIn:panel.
- v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
-
- codePanel := View in:panel.
- v := self initializeCodeViewIn:codePanel.
- v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
- codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
-
- v := self initializeInspectorViewsIn:panel.
- v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
+ bpanel := HorizontalPanelView in:self.
+
+ self initializeButtonsIn:bpanel.
+
+ bH := bpanel preferredHeight + 5.
+ bpanel origin:(0.0 @ mH)
+ extent:(1.0 @ bH).
+ panel := VariableVerticalPanel
+ origin:(0.0 @ (mH + bH))
+ corner:(1.0 @ 1.0)
+ in:self.
+
+ v := self initializeContextListViewIn:panel.
+ v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
+
+ codePanel := View in:panel.
+ v := self initializeCodeViewIn:codePanel.
+ v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
+ codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
+
+ v := self initializeInspectorViewsIn:panel.
+ v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
] ifTrue:[
- bpanel1 := HorizontalPanelView in:self.
- self initializeButtons1In:bpanel1.
-
- bH1 := bpanel1 preferredHeight + 5.
- bpanel1 origin:(0.0 @ mH)
- extent:(1.0 @ bH1).
- panel := VariableVerticalPanel
- origin:(0.0 @ (mH + bH1))
- corner:(1.0 @ 1.0)
- in:self.
- "/ panel showHandle:true.
- "/ panel handlePosition:#left.
-
- v := self initializeContextListViewIn:panel.
- v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
-
- codePanel := View in:panel.
- bpanel2 := HorizontalPanelView in:codePanel.
- self initializeButtons2In:bpanel2.
-
- bH2 := bpanel2 preferredHeight + 5.
- bpanel2 origin:(0.0 @ 0.0)
- extent:(1.0 @ bH2).
-
- exceptionInfoLabel := Label label:''.
- exceptionInfoLabel adjust:#left.
-
- exceptionAndTogglePanel := HorizontalPanelView in:codePanel.
- exceptionAndTogglePanel horizontalLayout:#left.
- exceptionAndTogglePanel
- geometryLayout:
- ((LayoutFrame
- origin:(0.0 @ 0.0)
- corner:(1.0 @ 0.0))
- topOffset:bH2;
- bottomOffset:(bH2 + exceptionInfoLabel preferredHeight + 6);
- rightOffset:-2).
-
- methodCodeToggleSelectionHolder := 1 asValue.
- methodCodeToggleSelectionHolder onChangeSend:#methodCodeToggleChanged to:self.
- methodCodeToggle := PopUpList label:(resources string:'Original Code (Executed)') in:exceptionAndTogglePanel.
- methodCodeToggle list:(resources array:#( 'Original Code (Executed)' 'Current Code')).
- methodCodeToggle useIndex:true.
- methodCodeToggle model:methodCodeToggleSelectionHolder.
- methodCodeToggle beInvisible.
-
- exceptionAndTogglePanel add:exceptionInfoLabel.
-
- v := self initializeCodeViewIn:codePanel.
- v origin:(0.0 @ (bH2+exceptionInfoLabel preferredHeight+6)) corner:(1.0 @ 1.0).
- codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
-
- v := self initializeInspectorViewsIn:panel.
- v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
+ bpanel1 := HorizontalPanelView in:self.
+ self initializeButtons1In:bpanel1.
+
+ bH1 := bpanel1 preferredHeight + 5.
+ bpanel1 origin:(0.0 @ mH)
+ extent:(1.0 @ bH1).
+ panel := VariableVerticalPanel
+ origin:(0.0 @ (mH + bH1))
+ corner:(1.0 @ 1.0)
+ in:self.
+ "/ panel showHandle:true.
+ "/ panel handlePosition:#left.
+
+ v := self initializeContextListViewIn:panel.
+ v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
+
+ codePanel := View in:panel.
+ bpanel2 := HorizontalPanelView in:codePanel.
+ self initializeButtons2In:bpanel2.
+
+ bH2 := bpanel2 preferredHeight + 5.
+ bpanel2 origin:(0.0 @ 0.0)
+ extent:(1.0 @ bH2).
+
+ exceptionInfoLabel := Label label:''.
+ exceptionInfoLabel adjust:#left.
+
+ exceptionAndTogglePanel := HorizontalPanelView in:codePanel.
+ exceptionAndTogglePanel horizontalLayout:#left.
+ exceptionAndTogglePanel
+ geometryLayout:
+ ((LayoutFrame
+ origin:(0.0 @ 0.0)
+ corner:(1.0 @ 0.0))
+ topOffset:bH2;
+ bottomOffset:(bH2 + exceptionInfoLabel preferredHeight + 6);
+ rightOffset:-2).
+
+ methodCodeToggleSelectionHolder := 1 asValue.
+ methodCodeToggleSelectionHolder onChangeSend:#methodCodeToggleChanged to:self.
+ methodCodeToggle := PopUpList label:(resources string:'Original Code (Executed)') in:exceptionAndTogglePanel.
+ methodCodeToggle list:(resources array:#( 'Original Code (Executed)' 'Current Code')).
+ methodCodeToggle useIndex:true.
+ methodCodeToggle model:methodCodeToggleSelectionHolder.
+ methodCodeToggle beInvisible.
+
+ exceptionAndTogglePanel add:exceptionInfoLabel.
+
+ v := self initializeCodeViewIn:codePanel.
+ v origin:(0.0 @ (bH2+exceptionInfoLabel preferredHeight+6)) corner:(1.0 @ 1.0).
+ codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
+
+ v := self initializeInspectorViewsIn:panel.
+ v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
].
DefaultDebuggerBackgroundColor notNil ifTrue:[
- self allViewBackground:DefaultDebuggerBackgroundColor.
+ self allViewBackground:DefaultDebuggerBackgroundColor.
].
LastExtent notNil ifTrue:[
- self extent:LastExtent.
+ self extent:LastExtent.
].
LastOrigin notNil ifTrue:[
- self origin:LastOrigin.
+ self origin:LastOrigin.
].
"
@@ -2407,12 +2424,12 @@
initializeAbortButtonIn:bpanel
abortButton := Button
- label:(resources string:'Abort')
- action:[
- abortButton turnOffWithoutRedraw.
- self doAbort
- ]
- in:bpanel.
+ label:(resources string:'Abort')
+ action:[
+ abortButton turnOffWithoutRedraw.
+ self doAbort
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 20:56:47 / cg"
"Modified: / 17.11.2001 / 20:57:17 / cg"
@@ -2445,9 +2462,9 @@
self initializeDefineButtonIn:bpanel.
(UserPreferences current allowSendMailFromDebugger and:[SendMailTool notNil]) ifTrue:[
- separator := View extent:(10 @ 5) in:bpanel.
- separator borderWidth:0; level:0.
- self initializeReportButtonIn:bpanel.
+ separator := View extent:(10 @ 5) in:bpanel.
+ separator borderWidth:0; level:0.
+ self initializeReportButtonIn:bpanel.
].
"Modified: / 17.11.2001 / 21:02:59 / cg"
!
@@ -2585,7 +2602,7 @@
self initializeDefineButtonIn:bpanel.
(UserPreferences current allowSendMailFromDebugger and:[SendMailTool notNil]) ifTrue:[
- self initializeReportButtonIn:bpanel.
+ self initializeReportButtonIn:bpanel.
].
@@ -2622,10 +2639,10 @@
|v|
v := HVScrollableView
- for:SelectionInListView
- miniScrollerH:true
- miniScrollerV:false
- in:panel.
+ for:SelectionInListView
+ miniScrollerH:true
+ miniScrollerV:false
+ in:panel.
v autoHideHorizontalScrollBar:true.
contextView := v scrolledView.
@@ -2646,24 +2663,24 @@
initializeContinueButtonIn:bpanel
continueButton := Button
- label:(resources string:'Continue')
- action:[
- continueButton turnOffWithoutRedraw.
- self doContinue
- ]
- in:bpanel.
+ label:(resources string:'Continue')
+ action:[
+ continueButton turnOffWithoutRedraw.
+ self doContinue
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 20:57:34 / cg"
!
initializeDefineButtonIn:bpanel
defineButton := Button
- label:(resources string:'Define')
- action:[
- defineButton turnOffWithoutRedraw.
- self doDefine
- ]
- in:bpanel.
+ label:(resources string:'Define')
+ action:[
+ defineButton turnOffWithoutRedraw.
+ self doDefine
+ ]
+ in:bpanel.
defineButton beInvisible
"Created: / 17.11.2001 / 21:02:48 / cg"
@@ -2675,13 +2692,13 @@
hpanel := VariableHorizontalPanel in:panel.
receiverInspector := InspectorView
- origin:(0.0 @ 0.0) corner:(0.5 @ 1.0)
- in:hpanel.
+ origin:(0.0 @ 0.0) corner:(0.5 @ 1.0)
+ in:hpanel.
receiverInspector fieldListLabel:'Receiver'.
contextInspector := ContextInspectorView
- origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
- in:hpanel.
+ origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
+ in:hpanel.
contextInspector fieldListLabel:'Context'.
^ hpanel
@@ -2689,84 +2706,84 @@
initializeNextButtonIn:bpanel
nextButton := Button
- label:(resources string:'Debug_Next')
- action:[
- stepButton turnOff.
- self doNext
- ]
- in:bpanel.
+ label:(resources string:'Debug_Next')
+ action:[
+ stepButton turnOff.
+ self doNext
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 20:59:38 / cg"
!
initializeReportButtonIn:bpanel
reportButton := Button
- label:(resources string:'Report by Mail...')
- action:[
- reportButton turnOffWithoutRedraw.
- self doOpenReportMailApp.
- ]
- in:bpanel.
+ label:(resources string:'Report by Mail...')
+ action:[
+ reportButton turnOffWithoutRedraw.
+ self doOpenReportMailApp.
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 21:02:20 / cg"
!
initializeRestartButtonIn:bpanel
restartButton := Button
- label:(resources string:'Restart')
- action:[
- restartButton turnOff.
- self doRestart
- ]
- in:bpanel.
+ label:(resources string:'Restart')
+ action:[
+ restartButton turnOff.
+ self doRestart
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 20:58:52 / cg"
!
initializeReturnButtonIn:bpanel
returnButton := Button
- label:(resources string:'Return')
- action:[
- returnButton turnOff.
- self doReturn
- ]
- in:bpanel.
+ label:(resources string:'Return')
+ action:[
+ returnButton turnOff.
+ self doReturn
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 20:58:22 / cg"
!
initializeSendButtonIn:bpanel
sendButton := Button
- label:(resources string:'Send')
- action:[
- sendButton turnOff.
- self doSend
- ]
- in:bpanel.
+ label:(resources string:'Send')
+ action:[
+ sendButton turnOff.
+ self doSend
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 21:01:20 / cg"
!
initializeStepButtonIn:bpanel
stepButton := Button
- label:(resources string:'Debug_Step')
- action:[
- stepButton turnOff.
- self doStep
- ]
- in:bpanel.
+ label:(resources string:'Debug_Step')
+ action:[
+ stepButton turnOff.
+ self doStep
+ ]
+ in:bpanel.
"Created: / 17.11.2001 / 21:00:13 / cg"
!
initializeTerminateButtonIn:bpanel
terminateButton := Button
- label:(resources string:'Debug_Terminate')
- action:[
- terminateButton turnOffWithoutRedraw.
- self doTerminate
- ]
- in:bpanel.
+ label:(resources string:'Debug_Terminate')
+ action:[
+ terminateButton turnOffWithoutRedraw.
+ self doTerminate
+ ]
+ in:bpanel.
terminateButton backgroundColor:Color red lightened.
"/ terminateButton foregroundColor:Color red.
@@ -2778,14 +2795,14 @@
super postRealize.
inspecting ifTrue:[
- inspectedProcess notNil ifTrue:[
- "
- set prio somewhat higher (by 2, to allow walkBack-update process
- to run between mine and the debugged processes prio)
- "
- Processor activeProcess
- priority:(((inspectedProcess priority + 2) min:(Processor highIOPriority)) max:(Processor userSchedulingPriority+1)).
- ]
+ inspectedProcess notNil ifTrue:[
+ "
+ set prio somewhat higher (by 2, to allow walkBack-update process
+ to run between mine and the debugged processes prio)
+ "
+ Processor activeProcess
+ priority:(((inspectedProcess priority + 2) min:(Processor highIOPriority)) max:(Processor userSchedulingPriority+1)).
+ ]
].
self sensor addEventListener:self.
@@ -2798,7 +2815,7 @@
"/ the debuggee, there would be no event loop for me.
drawableId notNil ifTrue:[
- ^ self
+ ^ self
].
"physically create the view & subviews"
self recreate.
@@ -2810,37 +2827,37 @@
lines := aMessage asStringCollection.
lines size > 1 ifTrue:[
- l := lines first
+ l := lines first
] ifFalse:[
- l := aMessage.
+ l := aMessage.
].
l := l , ' ('.
Error handle:[:ex |
- l := l , '???'
+ l := l , '???'
] do:[
- processNameOrNil := aProcess name.
- processNameOrNil notNil ifTrue:[
- l := l , (processNameOrNil contractTo:20) , ''.
- ].
- pidOrNil := aProcess id printString.
- l := l , '[' , pidOrNil , ']'.
+ processNameOrNil := aProcess name.
+ processNameOrNil notNil ifTrue:[
+ l := l , (processNameOrNil contractTo:20) , ''.
+ ].
+ pidOrNil := aProcess id printString.
+ l := l , '[' , pidOrNil , ']'.
].
l := l , ')'.
self label:l.
((ShowThreadID == true) and:[OperatingSystem isMSDOSlike]) ifTrue:[
- osPidString := ' {threadID: ',OperatingSystem getThreadId printString,'}'.
+ osPidString := ' {threadID: ',OperatingSystem getThreadId printString,'}'.
].
exceptionInfoLabel notNil ifTrue:[
- exceptionInfoLabel
- label:(resources
- string:'Exception: %1 in process %2 [%3]%4'
- with:(lines first colorizeAllWith:Color red)
- with:(processNameOrNil ? '')
- with:(pidOrNil ? '')
- with:(osPidString ? ''))
+ exceptionInfoLabel
+ label:(resources
+ string:'Exception: %1 in process %2 [%3]%4'
+ with:(lines first colorizeAllWith:Color red)
+ with:(processNameOrNil ? '')
+ with:(pidOrNil ? '')
+ with:(osPidString ? ''))
].
"Modified: / 06-07-2006 / 12:43:19 / cg"
@@ -2850,8 +2867,8 @@
contextInterrupt
DebuggingDebugger == true ifTrue:[
- 'contextIRQ' printCR.
- thisContext sender fullPrint.
+ 'contextIRQ' printCR.
+ thisContext sender fullPrint.
].
self stepOrNext
@@ -2860,8 +2877,8 @@
stepInterrupt
DebuggingDebugger == true ifTrue:[
- 'stepIRQ' printCR.
- thisContext sender fullPrint.
+ 'stepIRQ' printCR.
+ thisContext sender fullPrint.
].
Processor yield.
self stepOrNext
@@ -2881,20 +2898,20 @@
processName := (Processor activeProcess nameOrId),' [',Processor activeProcess id printString,']'.
skipLineNr == #return ifTrue:[
- self label:('stepping context returned ' , ' (process: ' , processName , ')').
- here := thisContext sender sender.
- here setLineNumber:nil.
- here := nil.
- con := thisContext sender sender sender.
-
- HaltInterrupt handle:[:ex |
- ('DebugView [info]: halt/breakpoint in debugger at %1 ignored [stepOrNext]' bindWith:ex suspendedContext) infoPrintCR.
- ex proceed
- ] do:[
- self enter:con select:nil.
- ].
- con := nil.
- ^ self
+ self label:('stepping context returned ' , ' (process: ' , processName , ')').
+ here := thisContext sender sender.
+ here setLineNumber:nil.
+ here := nil.
+ con := thisContext sender sender sender.
+
+ HaltInterrupt handle:[:ex |
+ ('DebugView [info]: halt/breakpoint in debugger at %1 ignored [stepOrNext]' bindWith:ex suspendedContext) infoPrintCR.
+ ex proceed
+ ] do:[
+ self enter:con select:nil.
+ ].
+ con := nil.
+ ^ self
].
"/ "/
@@ -2907,8 +2924,8 @@
"/ ].
Processor activeProcess ~~ inspectedProcess ifTrue:[
- 'DebugView [info]: stray step interrupt' infoPrintCR.
- ^ self
+ 'DebugView [info]: stray step interrupt' infoPrintCR.
+ ^ self
].
here := thisContext. "stepInterrupt"
@@ -2916,73 +2933,73 @@
here := here sender. "the interrupted context"
DebuggingDebugger == true ifTrue:[
- '*******' printCR.
- 'here in ' print.
- inWrap ifTrue:['(wrap) ' print.].
- ((ObjectMemory addressOf:here) printStringRadix:16) print. ' ' print.
- here selector printCR.
+ '*******' printCR.
+ 'here in ' print.
+ inWrap ifTrue:['(wrap) ' print.].
+ ((ObjectMemory addressOf:here) printStringRadix:16) print. ' ' print.
+ here selector printCR.
].
"/ kludge an bug-workaround;
"/ I should not see those ...
here selector == #ioInterrupt ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'oops - should not get that one' printCR.
- ].
- Processor ioInterrupt.
- StepInterruptPending := 1.
- InterruptPending := 1.
- where := nil. here := nil.
- InStepInterrupt := nil.
- ^ self
+ DebuggingDebugger == true ifTrue:[
+ 'oops - should not get that one' printCR.
+ ].
+ Processor ioInterrupt.
+ StepInterruptPending := 1.
+ InterruptPending := 1.
+ where := nil. here := nil.
+ InStepInterrupt := nil.
+ ^ self
].
stepUntilEntering notNil ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'check if entering ' print. stepUntilEntering printCR.
- ].
- (stepUntilEntering match:here selector) ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'entering...' printCR.
- ].
- self label:('arrived at ' , stepUntilEntering , ' (process: ' , processName , ')').
-
- lastStepUntilEntering := stepUntilEntering.
- stepUntilEntering := nil.
- self enter:here select:nil.
- con := nil.
- ^ self
- ].
- "/ see if stepping context is still active ...
-
- con := here.
-
- DebuggingDebugger == true ifTrue:[
- 'start searching at: ' print.
- con fullPrint.
- ].
- [con notNil and:[con ~~ steppedContext]] whileTrue:[
- con := con sender
- ].
- con notNil ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'steppingContext still active - continue stepping' printCR.
- ].
- con := nil.
- where := nil. here := nil.
- StepInterruptPending := 1.
- InterruptPending := 1.
- InStepInterrupt := nil.
- ^ self
- ].
- stepUntilEntering := nil.
+ DebuggingDebugger == true ifTrue:[
+ 'check if entering ' print. stepUntilEntering printCR.
+ ].
+ (stepUntilEntering match:here selector) ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'entering...' printCR.
+ ].
+ self label:('arrived at ' , stepUntilEntering , ' (process: ' , processName , ')').
+
+ lastStepUntilEntering := stepUntilEntering.
+ stepUntilEntering := nil.
+ self enter:here select:nil.
+ con := nil.
+ ^ self
+ ].
+ "/ see if stepping context is still active ...
+
+ con := here.
+
+ DebuggingDebugger == true ifTrue:[
+ 'start searching at: ' print.
+ con fullPrint.
+ ].
+ [con notNil and:[con ~~ steppedContext]] whileTrue:[
+ con := con sender
+ ].
+ con notNil ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'steppingContext still active - continue stepping' printCR.
+ ].
+ con := nil.
+ where := nil. here := nil.
+ StepInterruptPending := 1.
+ InterruptPending := 1.
+ InStepInterrupt := nil.
+ ^ self
+ ].
+ stepUntilEntering := nil.
].
"
kludge to hide breakpoint wrappers in the context list:
- check if we are in a wrapper methods hidden setup-sequence
- if so, ignore the interrupt and continue single sending
+ check if we are in a wrapper methods hidden setup-sequence
+ if so, ignore the interrupt and continue single sending
"
isWrap := false.
left := false.
@@ -2990,70 +3007,70 @@
where := here.
inWrap ifTrue:[
- wrappedMethod := nil.
- 5 timesRepeat:[
- (where notNil and:[where isBlockContext not]) ifTrue:[
- method := where method.
- (method notNil and:[method isWrapped]) ifTrue:[
- "
- in a wrapper method
- "
- wrappedMethod ~~ method ifTrue:[
- wrappedMethod := method.
- lastWrappedContext := where.
- where sender receiver == method originalMethod ifFalse:[
- isWrap := true.
- ]
- ] ifFalse:[
- where == steppedContext ifTrue:[
-
- DebuggingDebugger == true ifTrue:[
- 'change stepCon from: ' print.
- steppedContext print.
- ' to lastWrapped: ' print.
- lastWrappedContext printCR.
- ].
-
- inWrap := false.
- leftWrap := true.
- wrapperContext := steppedContext.
- steppedContext := lastWrappedContext
- ]
- ]
- ].
- where := where sender
- ]
- ].
+ wrappedMethod := nil.
+ 5 timesRepeat:[
+ (where notNil and:[where isBlockContext not]) ifTrue:[
+ method := where method.
+ (method notNil and:[method isWrapped]) ifTrue:[
+ "
+ in a wrapper method
+ "
+ wrappedMethod ~~ method ifTrue:[
+ wrappedMethod := method.
+ lastWrappedContext := where.
+ where sender receiver == method originalMethod ifFalse:[
+ isWrap := true.
+ ]
+ ] ifFalse:[
+ where == steppedContext ifTrue:[
+
+ DebuggingDebugger == true ifTrue:[
+ 'change stepCon from: ' print.
+ steppedContext print.
+ ' to lastWrapped: ' print.
+ lastWrappedContext printCR.
+ ].
+
+ inWrap := false.
+ leftWrap := true.
+ wrapperContext := steppedContext.
+ steppedContext := lastWrappedContext
+ ]
+ ]
+ ].
+ where := where sender
+ ]
+ ].
].
isWrap ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'ignore wrap' printCR.
- ].
-
- "/
- "/ ignore, while in wrappers hidden setup
- "/
- where := nil. here := nil.
- ObjectMemory flushInlineCaches.
-
- skipLineNr == #return ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'skipRet in wrap' printCR.
- ]
- ].
-
- StepInterruptPending := 1.
- InterruptPending := 1.
- InStepInterrupt := nil.
- ^ self
+ DebuggingDebugger == true ifTrue:[
+ 'ignore wrap' printCR.
+ ].
+
+ "/
+ "/ ignore, while in wrappers hidden setup
+ "/
+ where := nil. here := nil.
+ ObjectMemory flushInlineCaches.
+
+ skipLineNr == #return ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'skipRet in wrap' printCR.
+ ]
+ ].
+
+ StepInterruptPending := 1.
+ InterruptPending := 1.
+ InStepInterrupt := nil.
+ ^ self
].
inBlock := inBlockBelow := anyStepBlocks := false.
DebuggingDebugger == true ifTrue:[
- 'bigStep is: ' print. bigStep printCR.
- 'steppedContext is: ' print. steppedContext printCR.
+ 'bigStep is: ' print. bigStep printCR.
+ 'steppedContext is: ' print. steppedContext printCR.
].
"/
@@ -3061,31 +3078,31 @@
"/
(bigStep
and:[steppedContext notNil]) ifTrue:[
- "
- a step or next - ignore all contexts below the interesting one
- "
- where := here. "the interrupted context"
- contextBelow := nil.
-
- where home notNil ifTrue:[
- "/
- "/ in a block called by 'our' context ?
- "/
- where home == steppedContext ifTrue:[
+ "
+ a step or next - ignore all contexts below the interesting one
+ "
+ where := here. "the interrupted context"
+ contextBelow := nil.
+
+ where home notNil ifTrue:[
+ "/
+ "/ in a block called by 'our' context ?
+ "/
+ where home == steppedContext ifTrue:[
"/ '*block*' printCR.
- inBlock := true
- ]
- ].
-
- where == steppedContext ifFalse:[
- where := where sender.
-
- where notNil ifTrue:[
- where home == steppedContext ifTrue:[
+ inBlock := true
+ ]
+ ].
+
+ where == steppedContext ifFalse:[
+ where := where sender.
+
+ where notNil ifTrue:[
+ where home == steppedContext ifTrue:[
"/ '*block*' printCR.
- inBlock := true.
- ]
- ].
+ inBlock := true.
+ ]
+ ].
"/ 'looking for ' print.
"/ (steppedContextAddress printStringRadix:16)print. '' printCR.
@@ -3093,282 +3110,282 @@
"/where print. ' ' print. ((ObjectMemory addressOf:where)printStringRadix:16) printCR.
"/steppedContext print. ' ' print. ((ObjectMemory addressOf:steppedContext)printStringRadix:16) printCR.
- where == steppedContext ifFalse:[
-
- "/ check if we are in a context below steppedContext
- "/ (i.e. if steppedContext can be reached from
- "/ interrupted context. Not using context-ref but its
- "/ address to avoid creation of many useless contexts.)
-
- inBlock ifFalse:[
- [where notNil] whileTrue:[
-
- "/ if either the receiver or any arg of this context
- "/ is a block of the steppedContext, we must really
- "/ do a single step. Otherwise, stepping through a
- "/ do:-loop would be very difficult.
- receiver := where receiver.
- (receiver isBlock
- and:[(receiver isKindOf:Block)
- and:[receiver home == steppedContext]])
- ifTrue:[
- anyStepBlocks := true.
- ] ifFalse:[
- where args do:[:arg |
- (arg isBlock
- and:[(arg isKindOf:Block)
- and:[arg home == steppedContext]])
- ifTrue:[
- anyStepBlocks := true.
- ]
- ]
- ].
-
- DebuggingDebugger == true ifTrue:[
- ((ObjectMemory addressOf:where) printStringRadix:16)print. ' ' print.
- where selector printCR.
- ].
-
- where == steppedContext ifTrue:[
+ where == steppedContext ifFalse:[
+
+ "/ check if we are in a context below steppedContext
+ "/ (i.e. if steppedContext can be reached from
+ "/ interrupted context. Not using context-ref but its
+ "/ address to avoid creation of many useless contexts.)
+
+ inBlock ifFalse:[
+ [where notNil] whileTrue:[
+
+ "/ if either the receiver or any arg of this context
+ "/ is a block of the steppedContext, we must really
+ "/ do a single step. Otherwise, stepping through a
+ "/ do:-loop would be very difficult.
+ receiver := where receiver.
+ (receiver isBlock
+ and:[(receiver isKindOf:Block)
+ and:[receiver home == steppedContext]])
+ ifTrue:[
+ anyStepBlocks := true.
+ ] ifFalse:[
+ where args do:[:arg |
+ (arg isBlock
+ and:[(arg isKindOf:Block)
+ and:[arg home == steppedContext]])
+ ifTrue:[
+ anyStepBlocks := true.
+ ]
+ ]
+ ].
+
+ DebuggingDebugger == true ifTrue:[
+ ((ObjectMemory addressOf:where) printStringRadix:16)print. ' ' print.
+ where selector printCR.
+ ].
+
+ where == steppedContext ifTrue:[
"/ 'found it - below; ignore' printCR.
- "
- found the interesting context somwehere up in the
- chain. We seem to be still below the interesting one ...
- "
- tracing == true ifTrue:[
- here printString printCR
- ].
- "
- yes, a context below
- - continue and schedule another stepInterrupt.
- Must flush caches since optimized methods not always
- look for pending interrupts
- "
-
- contextBelow notNil ifTrue:[
+ "
+ found the interesting context somwehere up in the
+ chain. We seem to be still below the interesting one ...
+ "
+ tracing == true ifTrue:[
+ here printString printCR
+ ].
+ "
+ yes, a context below
+ - continue and schedule another stepInterrupt.
+ Must flush caches since optimized methods not always
+ look for pending interrupts
+ "
+
+ contextBelow notNil ifTrue:[
"/ 'prepare for unwind-catch' printCR.
"/ 'con= ' print. contextBelow printCR.
"/ contextBelow selector notNil ifTrue:[
"/ self label:'single stepping - please wait ...(' , contextBelow selector , ')'.
"/ ].
- DebuggingDebugger == true ifTrue:[
- 'below stepCon; continue until unwind of: ' print.
- contextBelow printCR.
- ].
- Processor activeProcess forceInterruptOnReturnOf:contextBelow.
- StepInterruptPending := nil.
- ] ifFalse:[
- ObjectMemory flushInlineCaches.
+ DebuggingDebugger == true ifTrue:[
+ 'below stepCon; continue until unwind of: ' print.
+ contextBelow printCR.
+ ].
+ Processor activeProcess forceInterruptOnReturnOf:contextBelow.
+ StepInterruptPending := nil.
+ ] ifFalse:[
+ ObjectMemory flushInlineCaches.
"/ here selector notNil ifTrue:[
"/ self label:'single stepping - please wait ...(' , here selector , ')'.
"/ ].
- DebuggingDebugger == true ifTrue:[
- 'in stepCon; continue single stepping' printCR.
- ].
- StepInterruptPending := 1.
- InterruptPending := 1.
- ].
- where := nil. here := nil.
- InStepInterrupt := nil.
-
- ^ self
- ].
-
- (steppedContext notNil and:[
- where methodHome == steppedContext methodHome]) ifTrue:[
- inBlockBelow := true.
- ].
-
- anyStepBlocks ifFalse:[
- inBlock ifFalse:[
+ DebuggingDebugger == true ifTrue:[
+ 'in stepCon; continue single stepping' printCR.
+ ].
+ StepInterruptPending := 1.
+ InterruptPending := 1.
+ ].
+ where := nil. here := nil.
+ InStepInterrupt := nil.
+
+ ^ self
+ ].
+
+ (steppedContext notNil and:[
+ where methodHome == steppedContext methodHome]) ifTrue:[
+ inBlockBelow := true.
+ ].
+
+ anyStepBlocks ifFalse:[
+ inBlock ifFalse:[
"/ workaround a VM bug,
"/ which does not honor interrupt-on-return of block contexts
"/ sigh
where isBlockContext ifFalse:[
- contextBelow := where
+ contextBelow := where
].
- ]
- ].
- where := where sender
- ].
- s := 'context returned'.
- left := true.
- ].
- ] ifTrue:[
+ ]
+ ].
+ where := where sender
+ ].
+ s := 'context returned'.
+ left := true.
+ ].
+ ] ifTrue:[
"/ 'found it right in sender' printCR.
- s := 'after step'
- ].
- ] ifTrue:[
+ s := 'after step'
+ ].
+ ] ifTrue:[
"/ 'found it right away' printCR.
- s := 'after step'
- ].
+ s := 'after step'
+ ].
] ifFalse:[
"/ ' send' printCR.
- "
- a send
- "
- DebuggingDebugger == true ifTrue:[
- 'clear steppedContext' printCR.
- ].
- steppedContext := nil.
- s := 'after send'
+ "
+ a send
+ "
+ DebuggingDebugger == true ifTrue:[
+ 'clear steppedContext' printCR.
+ ].
+ steppedContext := nil.
+ s := 'after send'
].
ignore := false.
(inBlock and:[stepHow == #nextOver or:[stepHow == #nextOut]]) ifTrue:[
- ignore := true.
+ ignore := true.
].
"/ handle the case, when a subBlock leaves;
"/ continue stepping in the home context.
left ifTrue:[
- steppedContext home notNil ifTrue:[
- steppedContext := steppedContext home.
- s := 'after step'.
- left := false.
+ steppedContext home notNil ifTrue:[
+ steppedContext := steppedContext home.
+ s := 'after step'.
+ left := false.
"/ DebugView enterUnconditional:thisContext withMessage:'debug'.
- ]
+ ]
].
"
kludge to hide breakpoint wrappers in the context list:
- check if we are in a wrapper methods hidden exit-sequence
- if so, ignore the interrupt and continue single sending
+ check if we are in a wrapper methods hidden exit-sequence
+ if so, ignore the interrupt and continue single sending
"
(where isNil
and:[wrapperContext notNil])
ifTrue:[
- "/ did not find our steppedContext along the chain;
- "/ could be in a wrappedMethods exitBlock ...
-
- leftWrap ifFalse:[
- where := here.
- wrappedMethod := nil.
- 5 timesRepeat:[
- where notNil ifTrue:[
- where isBlockContext ifFalse:[
- method := where method.
- (method notNil and:[method isWrapped]) ifTrue:[
- where == wrapperContext ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'change stepCon fromWrapped: ' print.
- steppedContext print.
- ' to: ' print.
- wrapperContext printCR.
- ].
-
- inWrap := true.
- enteredWrap := true.
- steppedContext := wrapperContext.
- wrapperContext := nil.
- ]
- ].
- ].
- where := where sender
- ]
- ].
- ].
- enteredWrap ifTrue:[
- ignore := true
- ]
+ "/ did not find our steppedContext along the chain;
+ "/ could be in a wrappedMethods exitBlock ...
+
+ leftWrap ifFalse:[
+ where := here.
+ wrappedMethod := nil.
+ 5 timesRepeat:[
+ where notNil ifTrue:[
+ where isBlockContext ifFalse:[
+ method := where method.
+ (method notNil and:[method isWrapped]) ifTrue:[
+ where == wrapperContext ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'change stepCon fromWrapped: ' print.
+ steppedContext print.
+ ' to: ' print.
+ wrapperContext printCR.
+ ].
+
+ inWrap := true.
+ enteredWrap := true.
+ steppedContext := wrapperContext.
+ wrapperContext := nil.
+ ]
+ ].
+ ].
+ where := where sender
+ ]
+ ].
+ ].
+ enteredWrap ifTrue:[
+ ignore := true
+ ]
].
"/
left ifTrue:[
- "/ special care for stepInterrupt in send,
- "/ when created a dummy context (lineNr == 1)
-
- steppedContext lineNumber isNil ifTrue:[
- steppedContext selector == here sender selector ifTrue:[
- left := false.
- s := 'after step'.
- steppedContext := here sender.
- ].
- ].
- oneMore := true
+ "/ special care for stepInterrupt in send,
+ "/ when created a dummy context (lineNr == 1)
+
+ steppedContext lineNumber isNil ifTrue:[
+ steppedContext selector == here sender selector ifTrue:[
+ left := false.
+ s := 'after step'.
+ steppedContext := here sender.
+ ].
+ ].
+ oneMore := true
].
inBlock ifTrue:[
"/ 'inBlock' printCR.
- s := 'in block'.
+ s := 'in block'.
].
inBlockBelow ifTrue:[
- ignore := true
+ ignore := true
].
DebuggingDebugger == true ifTrue:[
- where notNil ifTrue:[
- '(' print. steppedContextLineno print. ') ' print.
- where printCR.
- ].
+ where notNil ifTrue:[
+ '(' print. steppedContextLineno print. ') ' print.
+ where printCR.
+ ].
].
ignore ifFalse:[
- (bigStep
- and:[steppedContextLineno notNil
- and:[where notNil
- and:[where lineNumber == steppedContextLineno]]]) ifTrue:[
- (here isBlockContext
- and:[(here methodHome == steppedContext)
- or:[here home == steppedContext]]) ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'same line but in block' printCR.
- ].
-
- steppedContext := actualContext := here.
- steppedContextLineno := here lineNumber.
- ] ifFalse:[
- "/ kludge - I only have the info for up to 255 lines
- steppedContextLineno ~~ 255 ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'same line - ignored' printCR.
- ].
- ignore := true
- ].
- ].
- ].
-
- (left not
- and:[skipLineNr notNil
- and:[where notNil
- and:[where lineNumber notNil
- and:[where lineNumber < skipLineNr]]]]) ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'skip (' print. skipLineNr print. ' unreached - ignored' printCR.
- ].
- ignore := true
- ].
-
- (steppedContextLineno isNil
- and:[skipLineNr isNil
- and:[thisContext sender selector == #contextInterrupt]]) ifTrue:[
- DebuggingDebugger == true ifTrue:[
- 'same line2 (after conIRQ) - ignored' printCR.
- ].
- ignore := true
- ].
+ (bigStep
+ and:[steppedContextLineno notNil
+ and:[where notNil
+ and:[where lineNumber == steppedContextLineno]]]) ifTrue:[
+ (here isBlockContext
+ and:[(here methodHome == steppedContext)
+ or:[here home == steppedContext]]) ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'same line but in block' printCR.
+ ].
+
+ steppedContext := actualContext := here.
+ steppedContextLineno := here lineNumber.
+ ] ifFalse:[
+ "/ kludge - I only have the info for up to 255 lines
+ steppedContextLineno ~~ 255 ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'same line - ignored' printCR.
+ ].
+ ignore := true
+ ].
+ ].
+ ].
+
+ (left not
+ and:[skipLineNr notNil
+ and:[where notNil
+ and:[where lineNumber notNil
+ and:[where lineNumber < skipLineNr]]]]) ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'skip (' print. skipLineNr print. ' unreached - ignored' printCR.
+ ].
+ ignore := true
+ ].
+
+ (steppedContextLineno isNil
+ and:[skipLineNr isNil
+ and:[thisContext sender selector == #contextInterrupt]]) ifTrue:[
+ DebuggingDebugger == true ifTrue:[
+ 'same line2 (after conIRQ) - ignored' printCR.
+ ].
+ ignore := true
+ ].
].
ignore ifTrue:[
"/' ' printCR.
- where := nil. here := nil.
- "
- yes, a context below
- - continue and schedule another stepInterrupt.
- Must flush caches since optimized methods not always
- look for pending interrupts
- "
- ObjectMemory flushInlineCaches.
- StepInterruptPending := 1.
- InterruptPending := 1.
- InStepInterrupt := nil.
- ^ self
+ where := nil. here := nil.
+ "
+ yes, a context below
+ - continue and schedule another stepInterrupt.
+ Must flush caches since optimized methods not always
+ look for pending interrupts
+ "
+ ObjectMemory flushInlineCaches.
+ StepInterruptPending := 1.
+ InterruptPending := 1.
+ InStepInterrupt := nil.
+ ^ self
].
"/ ' ' printCR.
@@ -3383,24 +3400,24 @@
"/'enter' printCR.
DebuggingDebugger == true ifTrue:[
- '==> enter on: ' print. thisContext sender sender printCR.
+ '==> enter on: ' print. thisContext sender sender printCR.
].
initiallyShown := nil.
(oneMore == true) ifTrue:[
- (thisContext sender sender lineNumber ? 0) <= 1 ifTrue:[
- initiallyShown := 2
- ] ifFalse:[
- initiallyShown := 1
- ]
+ (thisContext sender sender lineNumber ? 0) <= 1 ifTrue:[
+ initiallyShown := 2
+ ] ifFalse:[
+ initiallyShown := 1
+ ]
].
con := thisContext sender sender.
HaltInterrupt handle:[:ex |
- 'DebugView [info]: halt/breakpoint in debugger ignored [stepOpNext 2]' infoPrintCR.
- ex proceed
+ 'DebugView [info]: halt/breakpoint in debugger ignored [stepOpNext 2]' infoPrintCR.
+ ex proceed
] do:[
- self enter:con select:initiallyShown
+ self enter:con select:initiallyShown
].
con := nil
@@ -3416,18 +3433,18 @@
|implementorClass method|
selectedContext isNil ifTrue:[
- ^ self showError:'** select a context first **'
+ ^ self showError:'** select a context first **'
].
(MessageTracer isNil or:[MessageTracer isLoaded not]) ifTrue:[
- ^ self
+ ^ self
].
implementorClass := selectedContext methodClass.
implementorClass notNil ifTrue:[
- method := implementorClass compiledMethodAt:selectedContext selector.
- (method notNil and:[method isBreakpointed not]) ifTrue:[
- method setBreakPoint
- ]
+ method := implementorClass compiledMethodAt:selectedContext selector.
+ (method notNil and:[method isBreakpointed not]) ifTrue:[
+ method setBreakPoint
+ ]
].
contextView middleButtonMenu disable:#addBreakpoint.
contextView middleButtonMenu enable:#removeBreakpoint.
@@ -3445,7 +3462,7 @@
cls := selectedContext receiver class.
sel := selectedContext selector.
(cls includesSelector:sel) ifFalse:[
- sel := nil
+ sel := nil
].
Tools::NewSystemBrowser addToBookMarks:cls selector:sel
!
@@ -3476,9 +3493,9 @@
"stop the update process"
updateProcess notNil ifTrue:[
- monitorToggle lampColor:(Color yellow).
- updateProcess terminate.
- updateProcess := nil
+ monitorToggle lampColor:(Color yellow).
+ updateProcess terminate.
+ updateProcess := nil
]
!
@@ -3486,25 +3503,25 @@
"fork a subprocess which updates the contextList in regular intervals"
updateProcess isNil ifTrue:[
- updateProcess :=
- [
- [true] whileTrue:[
- monitorToggle showLamp ifTrue:[
- monitorToggle lampColor:(Color yellow).
- ] ifFalse:[
- monitorToggle activeForegroundColor:Color black.
- ].
- (Delay forSeconds:0.25) wait.
- self updateContext.
- monitorToggle showLamp ifTrue:[
- monitorToggle lampColor:(Color red).
- ] ifFalse:[
- monitorToggle activeForegroundColor:Color red.
- ].
- (Delay forSeconds:0.25) wait.
- self updateContext.
- ]
- ] forkAt:(Processor activePriority - 1)
+ updateProcess :=
+ [
+ [true] whileTrue:[
+ monitorToggle showLamp ifTrue:[
+ monitorToggle lampColor:(Color yellow).
+ ] ifFalse:[
+ monitorToggle activeForegroundColor:Color black.
+ ].
+ (Delay forSeconds:0.25) wait.
+ self updateContext.
+ monitorToggle showLamp ifTrue:[
+ monitorToggle lampColor:(Color red).
+ ] ifFalse:[
+ monitorToggle activeForegroundColor:Color red.
+ ].
+ (Delay forSeconds:0.25) wait.
+ self updateContext.
+ ]
+ ] forkAt:(Processor activePriority - 1)
]
!
@@ -3519,7 +3536,7 @@
cls := selectedContext receiver class.
sel := selectedContext selector.
(cls includesSelector:sel) ifFalse:[
- sel := nil
+ sel := nil
].
cls browserClass openInClass:cls selector:sel.
@@ -3535,11 +3552,11 @@
mthd := selectedContext method.
mthd notNil ifTrue:[
- cls := mthd containingClass.
- "/ still nil if unbound - then use receivers class
+ cls := mthd containingClass.
+ "/ still nil if unbound - then use receivers class
].
cls isNil ifTrue:[
- cls := selectedContext receiver class
+ cls := selectedContext receiver class
].
cls browserClass browseClassHierarchy:cls.
@@ -3555,11 +3572,11 @@
mthd := selectedContext method.
mthd notNil ifTrue:[
- cls := mthd containingClass.
- "/ still nil if unbound - then use receivers class
+ cls := mthd containingClass.
+ "/ still nil if unbound - then use receivers class
].
cls isNil ifTrue:[
- cls := selectedContext receiver class
+ cls := selectedContext receiver class
].
cls browserClass browseFullClassProtocol:cls.
@@ -3575,15 +3592,15 @@
mthd := selectedContext method.
mthd notNil ifTrue:[
- who := selectedContext method who.
- who notNil ifTrue:[
- cls := who methodClass.
- sel := who methodSelector.
- ]
+ who := selectedContext method who.
+ who notNil ifTrue:[
+ cls := who methodClass.
+ sel := who methodSelector.
+ ]
].
cls isNil ifTrue:[
- "/ class not found - try receiver
- cls := selectedContext receiver class
+ "/ class not found - try receiver
+ cls := selectedContext receiver class
].
cls browserClass openInClass:cls selector:sel.
@@ -3596,11 +3613,11 @@
"open a browser on the implementors of the selected method's selector"
selectedContext isNil ifTrue:[
- ^ self showError:'** select a context first **'
+ ^ self showError:'** select a context first **'
].
"/ selectedContext receiver class browserClass
UserPreferences systemBrowserClass
- browseImplementorsOf:selectedContext selector.
+ browseImplementorsOf:selectedContext selector.
!
browseImplementorsOf
@@ -3609,19 +3626,19 @@
|initial selector sel|
(sel := codeView selection) notNil ifTrue:[
- initial := SystemBrowser extractSelectorFrom:sel
+ initial := SystemBrowser extractSelectorFrom:sel
].
initial isNil ifTrue:[
- initial := selectedContext isNil
- ifTrue:[nil]
- ifFalse:[selectedContext selector].
+ initial := selectedContext isNil
+ ifTrue:[nil]
+ ifFalse:[selectedContext selector].
].
selector := Dialog
- requestSelector:'Selector to browse implementors of:'
- initialAnswer:initial.
+ requestSelector:'Selector to browse implementors of:'
+ initialAnswer:initial.
selector size == 0 ifFalse:[
- UserPreferences systemBrowserClass
- browseImplementorsMatching:selector.
+ UserPreferences systemBrowserClass
+ browseImplementorsMatching:selector.
]
"Modified: / 6.2.2000 / 01:05:14 / cg"
@@ -3634,13 +3651,13 @@
p := inspectedProcess ? Processor activeProcess.
(p notNil and:[p isGUIProcess]) ifTrue:[
- WindowGroup scheduledWindowGroups do:[:wg |
- wg process == p ifTrue:[
- appClass := wg application class.
- appClass browserClass openInClass:appClass selector:nil.
- ^ self
- ]
- ]
+ WindowGroup scheduledWindowGroups do:[:wg |
+ wg process == p ifTrue:[
+ appClass := wg application class.
+ appClass browserClass openInClass:appClass selector:nil.
+ ^ self
+ ]
+ ]
].
!
@@ -3654,7 +3671,7 @@
cls := selectedContext receiver class.
sel := selectedContext selector.
(cls includesSelector:sel) ifFalse:[
- sel := nil
+ sel := nil
].
cls browserClass openInClass:cls selector:sel.
@@ -3665,10 +3682,10 @@
"open a browser on the senders of the selected method's selector"
selectedContext isNil ifTrue:[
- ^ self showError:'** select a context first **'
+ ^ self showError:'** select a context first **'
].
UserPreferences systemBrowserClass
- browseAllCallsOn:selectedContext selector.
+ browseAllCallsOn:selectedContext selector.
!
browseSendersOf
@@ -3677,19 +3694,19 @@
|initial selector sel|
(sel := codeView selection) notNil ifTrue:[
- initial := SystemBrowser extractSelectorFrom:sel
+ initial := SystemBrowser extractSelectorFrom:sel
].
initial isNil ifTrue:[
- initial := selectedContext isNil
- ifTrue:[nil]
- ifFalse:[selectedContext selector].
+ initial := selectedContext isNil
+ ifTrue:[nil]
+ ifFalse:[selectedContext selector].
].
selector := Dialog
- requestSelector:'Selector to browse senders of:'
- initialAnswer:initial.
+ requestSelector:'Selector to browse senders of:'
+ initialAnswer:initial.
selector size == 0 ifFalse:[
- UserPreferences systemBrowserClass
- browseAllCallsOn:selector asSymbol.
+ UserPreferences systemBrowserClass
+ browseAllCallsOn:selector asSymbol.
]
"Modified: / 6.2.2000 / 01:05:29 / cg"
@@ -3726,23 +3743,23 @@
from whatever the process is doing, but does not terminate it."
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - abort anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - abort anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
inspecting ifTrue:[
- inspectedProcess isDead ifTrue:[
- self showTerminated.
- ^ self
- ].
- (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
- self showError:'** the process does not handle the abort signal **'
- ] ifTrue:[
- self interruptProcessWith:[AbortOperationRequest raise].
- ].
- ^ self
+ inspectedProcess isDead ifTrue:[
+ self showTerminated.
+ ^ self
+ ].
+ (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
+ self showError:'** the process does not handle the abort signal **'
+ ] ifTrue:[
+ self interruptProcessWith:[AbortOperationRequest raise].
+ ].
+ ^ self
].
steppedContext := wrapperContext := nil.
@@ -3751,11 +3768,11 @@
"exit private event-loop"
catchBlock notNil ifTrue:[
- abortButton turnOff.
- catchBlock value.
-
- "/ not reached
- 'DebugView [warning]: abort failed' errorPrintCR.
+ abortButton turnOff.
+ catchBlock value.
+
+ "/ not reached
+ 'DebugView [warning]: abort failed' errorPrintCR.
].
^ self.
@@ -3769,23 +3786,23 @@
from whatever the process is doing, but does not terminate it."
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - abort anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - abort anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
inspecting ifTrue:[
- inspectedProcess isDead ifTrue:[
- self showTerminated.
- ^ self
- ].
- (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
- self showError:'** the process does not handle the abort signal **'
- ] ifTrue:[
- self interruptProcessWith:[AbortAllOperationRequest raise].
- ].
- ^ self
+ inspectedProcess isDead ifTrue:[
+ self showTerminated.
+ ^ self
+ ].
+ (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
+ self showError:'** the process does not handle the abort signal **'
+ ] ifTrue:[
+ self interruptProcessWith:[AbortAllOperationRequest raise].
+ ].
+ ^ self
].
steppedContext := wrapperContext := nil.
@@ -3794,11 +3811,11 @@
"exit private event-loop"
catchBlock notNil ifTrue:[
- abortButton turnOff.
- catchBlock value.
-
- "/ not reached
- 'DebugView [warning]: abort failed' errorPrintCR.
+ abortButton turnOff.
+ catchBlock value.
+
+ "/ not reached
+ 'DebugView [warning]: abort failed' errorPrintCR.
].
^ self.
@@ -3812,59 +3829,59 @@
|proc exContext ex answer|
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - continue anyway ?')) ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - continue anyway ?')) ifFalse:[
+ ^ self
+ ]
].
inspecting ifTrue:[
- device hasColors ifTrue:[
- continueButton foregroundColor:Color red darkened.
- ].
- continueButton label:(resources string:'Stop').
- continueButton action:[self doStop].
-
- self processPerform:#resume.
-
- ^ self
+ device hasColors ifTrue:[
+ continueButton foregroundColor:Color red darkened.
+ ].
+ continueButton label:(resources string:'Stop').
+ continueButton action:[self doStop].
+
+ self processPerform:#resume.
+
+ ^ self
].
canContinue ifTrue:[
- exContext := thisContext findSpecialHandle:false raise:true.
-
- (exContext notNil
- and:[ (ex := exContext receiver) isLazyValue not
- and:[ ex isException
- and:[ ex signal == NoHandlerError
- and:[ ex parameter signal == RecursionError]]]])
- ifTrue:[
- "/ debug due to unhandled recursionInterrupt.
- "/ ask if we should proceed with more stack.
-
- answer := self confirm:'Debugger entered due to a stack overflow.\\Continue with more stack ?' withCRs.
- answer == true ifTrue:[
- proc := Processor activeProcess.
- proc setMaximumStackSize:(proc maximumStackSize * 2).
- ].
- ].
-
- steppedContext := wrapperContext := nil.
- tracing := false.
- haveControl := false.
- exitAction := #continue.
-
- "exit private event-loop"
- catchBlock value.
-
- "/ not reached.
- 'DebugView [warning]: continue failed' errorPrintCR.
- continueButton turnOff.
+ exContext := thisContext findSpecialHandle:false raise:true.
+
+ (exContext notNil
+ and:[ (ex := exContext receiver) isLazyValue not
+ and:[ ex isException
+ and:[ ex signal == NoHandlerError
+ and:[ ex parameter signal == RecursionError]]]])
+ ifTrue:[
+ "/ debug due to unhandled recursionInterrupt.
+ "/ ask if we should proceed with more stack.
+
+ answer := self confirm:'Debugger entered due to a stack overflow.\\Continue with more stack ?' withCRs.
+ answer == true ifTrue:[
+ proc := Processor activeProcess.
+ proc setMaximumStackSize:(proc maximumStackSize * 2).
+ ].
+ ].
+
+ steppedContext := wrapperContext := nil.
+ tracing := false.
+ haveControl := false.
+ exitAction := #continue.
+
+ "exit private event-loop"
+ catchBlock value.
+
+ "/ not reached.
+ 'DebugView [warning]: continue failed' errorPrintCR.
+ continueButton turnOff.
] ifFalse:[
- inspecting ifFalse:[
- 'DebugView [info]: resuming top context' infoPrintCR.
- self showSelection:1.
- self doReturn
- ]
+ inspecting ifFalse:[
+ 'DebugView [info]: resuming top context' infoPrintCR.
+ self showSelection:1.
+ self doReturn
+ ]
]
"Modified: / 5.10.1998 / 13:03:47 / cg"
@@ -3881,34 +3898,34 @@
selector := actualContext selector.
implClass := actualContext receiver class whichClassIncludesSelector:selector.
implClass notNil ifTrue:[
- "/ must be a subclassResponsibility
-
- idx := contextArray identityIndexOf:actualContext.
- idx > 1 ifTrue:[
- callee := contextArray at:idx-1.
-
- callee selector == #subclassResponsibility ifTrue:[
- restart := false.
- ]
- ].
+ "/ must be a subclassResponsibility
+
+ idx := contextArray identityIndexOf:actualContext.
+ idx > 1 ifTrue:[
+ callee := contextArray at:idx-1.
+
+ callee selector == #subclassResponsibility ifTrue:[
+ restart := false.
+ ]
+ ].
].
"generate nice argument names"
bagOfClassNames := (actualContext args collect:[:eachArg | eachArg class name]) asBag.
bagOfUsedClassNames := Bag new.
argNames := actualContext args
- collect:
- [:eachArg |
- |nm|
-
- nm := eachArg class name.
- (bagOfClassNames occurrencesOf:nm) == 1 ifTrue:[
- nm article , nm
- ] ifFalse:[
- bagOfUsedClassNames add:nm.
- nm asLowercaseFirst , (bagOfUsedClassNames occurrencesOf:nm) printString
- ].
- ].
+ collect:
+ [:eachArg |
+ |nm|
+
+ nm := eachArg class name.
+ (bagOfClassNames occurrencesOf:nm) == 1 ifTrue:[
+ nm article , nm
+ ] ifFalse:[
+ bagOfUsedClassNames add:nm.
+ nm asLowercaseFirst , (bagOfUsedClassNames occurrencesOf:nm) printString
+ ].
+ ].
proto := Method methodDefinitionTemplateForSelector:selector andArgumentNames:argNames.
@@ -3916,24 +3933,24 @@
haltStmtFix := ' self halt:''please change %2 as required''.'.
actualContext receiver isNil ifTrue:[
- (self confirm:'Are you sure you want to add this method (to UndefinedObject) ?')
- ifFalse:[
- ^ self
- ]
+ (self confirm:'Are you sure you want to add this method (to UndefinedObject) ?')
+ ifFalse:[
+ ^ self
+ ]
].
receiversClass := actualContext receiver class.
(receiversClass instVarNames includes:selector) ifTrue:[
- code := '%1\' , haltStmtFix , '\ ^ %2'.
- cat := 'accessing'.
+ code := '%1\' , haltStmtFix , '\ ^ %2'.
+ cat := 'accessing'.
].
(selector numArgs == 1
and:[(selector endsWith:':')
and:[receiversClass instVarNames includes:(selector copyWithoutLast:1)]])
ifTrue:[
- code := '%1\' , haltStmtFix , '\ %2 := arg.'.
- cat := 'accessing'.
+ code := '%1\' , haltStmtFix , '\ %2 := arg.'.
+ cat := 'accessing'.
].
"/ actualContext receiver isClass ifTrue:[
@@ -3945,19 +3962,19 @@
"/ ].
"/ ].
code isNil ifTrue:[
- code := '%1\' , haltStmtDef
+ code := '%1\' , haltStmtDef
].
self
- codeAccept:(code bindWith:proto with:selector) withCRs
- inClass:receiversClass
- unwind:false
- category:cat
- onCancel:[^ self].
+ codeAccept:(code bindWith:proto with:selector) withCRs
+ inClass:receiversClass
+ unwind:false
+ category:cat
+ onCancel:[^ self].
self doShowSelection:selectionIndex.
restart ifTrue:[
- self doRestart
+ self doRestart
]
"Modified: / 17.11.2001 / 23:43:54 / cg"
@@ -3973,23 +3990,23 @@
inspecting ifTrue:[^ self].
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - step anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - step anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
canContinue ifTrue:[
- steppedContext := wrapperContext := nil.
- haveControl := false.
- exitAction := #step.
-
- "exit private event-loop"
- catchBlock value.
-
- "/ not reached
- 'DebugView [warning]: send failed' errorPrintCR.
- sendButton turnOff.
+ steppedContext := wrapperContext := nil.
+ haveControl := false.
+ exitAction := #step.
+
+ "exit private event-loop"
+ catchBlock value.
+
+ "/ not reached
+ 'DebugView [warning]: send failed' errorPrintCR.
+ sendButton turnOff.
]
"Created: / 6.3.1997 / 21:09:36 / cg"
@@ -4027,8 +4044,8 @@
doNoTrace
traceView notNil ifTrue:[
- traceView topView destroy.
- traceView := nil.
+ traceView topView destroy.
+ traceView := nil.
].
tracing := false
!
@@ -4045,9 +4062,9 @@
str := '' writeStream.
str nextPutLine:('Error notification from '
- , OperatingSystem getLoginName
- , '@'
- , OperatingSystem getHostName).
+ , OperatingSystem getLoginName
+ , '@'
+ , OperatingSystem getHostName).
str cr.
str nextPutLine:('Time: ' , Timestamp now printString).
@@ -4060,16 +4077,16 @@
str cr.
firstContext notNil ifTrue:[
- firstContext fullPrintAllOn:str.
+ firstContext fullPrintAllOn:str.
].
str cr;cr.
SendMailTool
- openForMessage:(str contents)
- withSubject:('STX Error:[', self label, ']')
- preOpenBlock:[:inst|
- inst recipientEntryField value:'error@exept.de'
- ].
+ openForMessage:(str contents)
+ withSubject:('STX Error:[', self label, ']')
+ preOpenBlock:[:inst|
+ inst recipientEntryField value:'error@exept.de'
+ ].
"Modified: / 20-09-2007 / 12:40:40 / cg"
!
@@ -4078,16 +4095,16 @@
"restart - the selected context will be restarted"
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - restart anyway ?')) ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - restart anyway ?')) ifFalse:[
+ ^ self
+ ]
].
inspecting ifTrue:[
- selectedContext isNil ifTrue:[
- ^ self showError:'** select a context first **'
- ].
- self interruptProcessWith:[ selectedContext unwindAndRestart ].
- ^ self
+ selectedContext isNil ifTrue:[
+ ^ self showError:'** select a context first **'
+ ].
+ self interruptProcessWith:[ selectedContext unwindAndRestart ].
+ ^ self
].
steppedContext := wrapperContext := nil.
haveControl := false.
@@ -4107,18 +4124,18 @@
"return - the selected context will do a ^nil"
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - return anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - return anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
inspecting ifTrue:[
- selectedContext isNil ifTrue:[
- ^ self showError:'** select a context first **'
- ].
- self interruptProcessWith:[selectedContext unwind:nil].
- ^ self
+ selectedContext isNil ifTrue:[
+ ^ self showError:'** select a context first **'
+ ].
+ self interruptProcessWith:[selectedContext unwind:nil].
+ ^ self
].
steppedContext := wrapperContext := nil.
@@ -4178,69 +4195,69 @@
inspecting ifTrue:[^ self].
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - step anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - step anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
canContinue ifTrue:[
- selectedContext notNil ifTrue:[
- con := actualContext. "/ selectedContext.
- steppedContextLineno := actualContext lineNumber.
- ] ifFalse:[
- con := contextArray at:2.
- steppedContextLineno := con lineNumber.
- ].
-
- skipLineNr := lineNr.
-
- lineNr == -1 ifTrue:[
- steppedContextLineno := skipLineNr := nil.
- ].
-
- (stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
- steppedContext := contextArray at:1.
- stepHow := #nextIn.
- ] ifFalse:[
- stepHow == #nextOut ifTrue:[
- steppedContext := con home.
- ] ifFalse:[
- steppedContext := con.
- ].
- ].
- wrapperContext := nil.
+ selectedContext notNil ifTrue:[
+ con := actualContext. "/ selectedContext.
+ steppedContextLineno := actualContext lineNumber.
+ ] ifFalse:[
+ con := contextArray at:2.
+ steppedContextLineno := con lineNumber.
+ ].
+
+ skipLineNr := lineNr.
+
+ lineNr == -1 ifTrue:[
+ steppedContextLineno := skipLineNr := nil.
+ ].
+
+ (stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
+ steppedContext := contextArray at:1.
+ stepHow := #nextIn.
+ ] ifFalse:[
+ stepHow == #nextOut ifTrue:[
+ steppedContext := con home.
+ ] ifFalse:[
+ steppedContext := con.
+ ].
+ ].
+ wrapperContext := nil.
"/ ' step con:' print. (ObjectMemory addressOf:steppedContext) printHex. ' ' print. steppedContext printCR.
- "
- if we step in a wrapped method,
- prepare to skip the prolog ...
- "
-
- inWrap := false.
- method := con method.
- (method notNil
- and:[method isWrapped
- and:[method originalMethod ~~ method]]) ifTrue:[
- inWrap := true
- ].
-
- lineNr == #return ifTrue:[
- Processor activeProcess forceInterruptOnReturnOf:con.
- ].
-
- con := nil.
- bigStep := true.
- haveControl := false.
- exitAction := #step.
-
- "exit private event-loop"
- catchBlock value.
-
- "/ not reached
- 'DebugView [warning]: step failed' errorPrintCR.
- stepButton turnOff. nextButton turnOff. sendButton turnOff.
+ "
+ if we step in a wrapped method,
+ prepare to skip the prolog ...
+ "
+
+ inWrap := false.
+ method := con method.
+ (method notNil
+ and:[method isWrapped
+ and:[method originalMethod ~~ method]]) ifTrue:[
+ inWrap := true
+ ].
+
+ lineNr == #return ifTrue:[
+ Processor activeProcess forceInterruptOnReturnOf:con.
+ ].
+
+ con := nil.
+ bigStep := true.
+ haveControl := false.
+ exitAction := #step.
+
+ "exit private event-loop"
+ catchBlock value.
+
+ "/ not reached
+ 'DebugView [warning]: step failed' errorPrintCR.
+ stepButton turnOff. nextButton turnOff. sendButton turnOff.
]
"Modified: / 29.7.1998 / 21:50:16 / cg"
@@ -4250,15 +4267,15 @@
"stop the process (if its running, otherwise this is a no-op)"
inspecting ifTrue:[
- device hasColors ifTrue:[
- continueButton foregroundColor:Color green darkened darkened.
- ].
- continueButton label:(resources string:'Continue').
- continueButton action:[self doContinue].
-
- self processPerform:#stop.
-
- ^ self
+ device hasColors ifTrue:[
+ continueButton foregroundColor:Color green darkened darkened.
+ ].
+ continueButton label:(resources string:'Continue').
+ continueButton action:[self doContinue].
+
+ self processPerform:#stop.
+
+ ^ self
].
"Modified: 20.10.1996 / 18:30:48 / cg"
@@ -4268,15 +4285,15 @@
"terminate - the process has a chance for cleanup"
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - terminate anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code modified - terminate anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
inspecting ifTrue:[
- self processPerform:#terminate.
- ^ self
+ self processPerform:#terminate.
+ ^ self
].
steppedContext := wrapperContext := nil.
@@ -4288,11 +4305,11 @@
"/ not reached (normally)
inspecting ifFalse:[
- 'DebugView [warning]: terminate failed' errorPrintCR.
- (self confirm:'Regular terminate failed - do it the hard way ?') ifTrue:[
- Debugger newDebugger.
- Processor activeProcess terminate.
- ]
+ 'DebugView [warning]: terminate failed' errorPrintCR.
+ (self confirm:'Regular terminate failed - do it the hard way ?') ifTrue:[
+ Debugger newDebugger.
+ Processor activeProcess terminate.
+ ]
].
terminateButton turnOff.
@@ -4332,8 +4349,8 @@
"tracestep - not implemented yet"
canContinue ifTrue:[
- tracing := true.
- self doStep
+ tracing := true.
+ self doStep
]
!
@@ -4348,24 +4365,36 @@
!
ignoreAllHaltsForever
- self addIgnoredHaltForCount:-1 orTimeDuration:nil forAll:true.
+ self addIgnoredHaltForCount:-1 orTimeDuration:nil orUntilShiftKey:false forAll:true.
"Created: / 08-05-2011 / 10:19:56 / cg"
!
+ignoreAllHaltsUntilShiftKeyIsPressed
+ self addIgnoredHaltForCount:nil orTimeDuration:nil orUntilShiftKey:true forAll:true.
+
+ "Created: / 27-01-2012 / 11:32:14 / cg"
+!
+
ignoreHaltForever
- self addIgnoredHaltForCount:-1 orTimeDuration:nil forAll:false.
-
- "Modified: / 08-05-2011 / 10:20:03 / cg"
+ self addIgnoredHaltForCount:-1 orTimeDuration:nil orUntilShiftKey:false forAll:false.
+
+ "Modified: / 27-01-2012 / 11:31:37 / cg"
+!
+
+ignoreHaltUntilShiftKeyIsPressed
+ self addIgnoredHaltForCount:nil orTimeDuration:nil orUntilShiftKey:true forAll:false.
+
+ "Created: / 27-01-2012 / 11:36:54 / cg"
!
inspectContext
"launch an inspector on the currently selected context"
contextView selection notNil ifTrue:[
- (contextView selectionValue startsWith:'**') ifFalse:[
- (contextArray at:(contextView selection)) inspect.
- ]
+ (contextView selectionValue startsWith:'**') ifFalse:[
+ (contextArray at:(contextView selection)) inspect.
+ ]
]
!
@@ -4383,95 +4412,95 @@
|items m nameOfExecutable|
exclusive ifTrue:[
- items := #(
- ('Show More WalkBack' showMore )
- ('Show Verbose WalkBack' showVerboseWalkback )
- ('-' )
- ('Add Breakpoint' addBreakpoint )
- ('Remove Breakpoint' removeBreakpoint )
- ('Remove all Break- && Tracepoints' removeAllBreakpoints )
- ('-' )
- ).
+ items := #(
+ ('Show More WalkBack' showMore )
+ ('Show Verbose WalkBack' showVerboseWalkback )
+ ('-' )
+ ('Add Breakpoint' addBreakpoint )
+ ('Remove Breakpoint' removeBreakpoint )
+ ('Remove all Break- && Tracepoints' removeAllBreakpoints )
+ ('-' )
+ ).
] ifFalse:[
- items := #(
- ('Show More WalkBack' showMore )
- ('Show Verbose WalkBack' showVerboseWalkback )
- ('-' )
- ('Skip' skip )
- ('Step Out' skipForReturn )
- ('Skip until Entering...' skipUntilEntering )
- ('-' )
+ items := #(
+ ('Show More WalkBack' showMore )
+ ('Show Verbose WalkBack' showVerboseWalkback )
+ ('-' )
+ ('Skip' skip )
+ ('Step Out' skipForReturn )
+ ('Skip until Entering...' skipUntilEntering )
+ ('-' )
"
- ('Continue' doContinue )
- ('Terminate' doTerminate )
- ('Abort' doAbort )
- ('-' )
- ('Step' doStep )
- ('Send' doSend )
- ('-' )
- ('Return' doReturn )
- ('Restart' doRestart )
- ('-' )
+ ('Continue' doContinue )
+ ('Terminate' doTerminate )
+ ('Abort' doAbort )
+ ('-' )
+ ('Step' doStep )
+ ('Send' doSend )
+ ('-' )
+ ('Return' doReturn )
+ ('Restart' doRestart )
+ ('-' )
"
- ('Add Breakpoint' addBreakpoint )
- ('Remove Breakpoint' removeBreakpoint )
- ('Remove all Break- && Tracepoints' removeAllBreakpoints )
- ).
-
- self allowBreakPointsInDebugger ifFalse:[
- items := items , #(
- ('Allow Breakpoints && halt in Debugger' doNotIgnoreBreakpoints )
- ).
- ] ifTrue:[
- items := items , #(
- ('Ignore Breakpoints && halt in Debugger' doIgnoreBreakpoints )
- ).
- ].
-
- items := items , #(
- ('-' )
- ('Browse Implementing Class' browseImplementingClass )
- ('Browse Receivers Class' browseReceiversClass )
- ('Browse Receivers Class Hierarchy' browseClassHierarchy )
- ('Browse Receivers Full Protocol' browseFullClassProtocol )
- ('Implementors' browseImplementors )
- ('Implementors Of...' browseImplementorsOf )
- ('Senders' browseSenders )
- ('Senders Of...' browseSendersOf )
- ('-' )
- ('Inspect Context' inspectContext )
- ).
+ ('Add Breakpoint' addBreakpoint )
+ ('Remove Breakpoint' removeBreakpoint )
+ ('Remove all Break- && Tracepoints' removeAllBreakpoints )
+ ).
+
+ self allowBreakPointsInDebugger ifFalse:[
+ items := items , #(
+ ('Allow Breakpoints && halt in Debugger' doNotIgnoreBreakpoints )
+ ).
+ ] ifTrue:[
+ items := items , #(
+ ('Ignore Breakpoints && halt in Debugger' doIgnoreBreakpoints )
+ ).
+ ].
+
+ items := items , #(
+ ('-' )
+ ('Browse Implementing Class' browseImplementingClass )
+ ('Browse Receivers Class' browseReceiversClass )
+ ('Browse Receivers Class Hierarchy' browseClassHierarchy )
+ ('Browse Receivers Full Protocol' browseFullClassProtocol )
+ ('Implementors' browseImplementors )
+ ('Implementors Of...' browseImplementorsOf )
+ ('Senders' browseSenders )
+ ('Senders Of...' browseSendersOf )
+ ('-' )
+ ('Inspect Context' inspectContext )
+ ).
].
items := items , #(
- ('Copy WalkBack Text' copyWalkbackText )
- ('-' )
- ('QuickTerminate' quickTerminate )
- ('=' )).
+ ('Copy WalkBack Text' copyWalkbackText )
+ ('-' )
+ ('QuickTerminate' quickTerminate )
+ ('=' )).
nameOfExecutable := OperatingSystem nameOfSTXExecutable asFilename withoutSuffix baseName.
nameOfExecutable = 'stx' ifTrue:[ nameOfExecutable := 'Smalltalk' ].
items := items , {
- { 'Exit %1 (No Confirmation)' bindWith:nameOfExecutable. #exit }}.
+ { 'Exit %1 (No Confirmation)' bindWith:nameOfExecutable. #exit }}.
m := PopUpMenu
- itemList:items
- resources:resources
- receiver:self
- for:contextView.
+ itemList:items
+ resources:resources
+ receiver:self
+ for:contextView.
verboseBacktrace ifTrue:[
- m labelAt:#showVerboseWalkback put:(resources string:'Show Dense WalkBack').
- m selectorAt:#showVerboseWalkback put:#showDenseWalkback
+ m labelAt:#showVerboseWalkback put:(resources string:'Show Dense WalkBack').
+ m selectorAt:#showVerboseWalkback put:#showDenseWalkback
].
inspecting ifTrue:[
- m notNil ifTrue:[
- m disableAll:#(doTraceStep removeBreakpoint browseImplementingClass browseReceiversClass
- browseClassHierarchy browseFullClassProtocol
- browseImplementors browseSenders inspectContext skip doStepOut).
- ].
+ m notNil ifTrue:[
+ m disableAll:#(doTraceStep removeBreakpoint browseImplementingClass browseReceiversClass
+ browseClassHierarchy browseFullClassProtocol
+ browseImplementors browseSenders inspectContext skip doStepOut).
+ ].
].
self updateMenuItems.
@@ -4498,17 +4527,17 @@
|answer dT|
[
- answer := Dialog
- request:(resources string:'How long should all halts/breakpoints be ignored [smh] ?')
- initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
- answer isEmptyOrNil ifTrue:[^ self].
-
- dT := TimeDuration readFrom:answer onError:[ nil ].
- dT notNil ifTrue:[
- LastIgnoreHaltDuration := dT.
- self addIgnoredHaltForCount:nil orTimeDuration:dT forAll:true.
- ^ self.
- ].
+ answer := Dialog
+ request:(resources string:'How long should all halts/breakpoints be ignored [smh] ?')
+ initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
+ answer isEmptyOrNil ifTrue:[^ self].
+
+ dT := TimeDuration readFrom:answer onError:[ nil ].
+ dT notNil ifTrue:[
+ LastIgnoreHaltDuration := dT.
+ self addIgnoredHaltForCount:nil orTimeDuration:dT orUntilShiftKey:false forAll:true.
+ ^ self.
+ ].
] loop
"Created: / 08-05-2011 / 10:19:20 / cg"
@@ -4518,52 +4547,52 @@
|answer n|
[
- answer := Dialog
- request:(resources string:'How often should this halt be ignored ?')
- initialAnswer:(LastIgnoreHaltNTimes ? '') printString.
- answer isEmptyOrNil ifTrue:[^ self].
-
- n := Integer readFrom:answer onError:nil.
- n notNil ifTrue:[
- LastIgnoreHaltNTimes := n.
- self addIgnoredHaltForCount:n orTimeDuration:nil forAll:false.
- ^ self.
- ].
+ answer := Dialog
+ request:(resources string:'How often should this halt be ignored ?')
+ initialAnswer:(LastIgnoreHaltNTimes ? '') printString.
+ answer isEmptyOrNil ifTrue:[^ self].
+
+ n := Integer readFrom:answer onError:nil.
+ n notNil ifTrue:[
+ LastIgnoreHaltNTimes := n.
+ self addIgnoredHaltForCount:n orTimeDuration:nil orUntilShiftKey:false forAll:false.
+ ^ self.
+ ].
] loop.
- "Modified: / 08-05-2011 / 10:20:19 / cg"
+ "Modified: / 27-01-2012 / 11:31:44 / cg"
!
openIgnoreHaltUntilTimeElapsedDialog
|answer dT|
[
- answer := Dialog
- request:(resources string:'How long should this halt/breakpoint be ignored (s/m/h) ?')
- initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
- answer isEmptyOrNil ifTrue:[^ self].
-
- dT := TimeDuration readFrom:answer onError:[ nil ].
- dT notNil ifTrue:[
- LastIgnoreHaltDuration := dT.
- self addIgnoredHaltForCount:nil orTimeDuration:dT forAll:false.
- ^ self.
- ].
+ answer := Dialog
+ request:(resources string:'How long should this halt/breakpoint be ignored (s/m/h) ?')
+ initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
+ answer isEmptyOrNil ifTrue:[^ self].
+
+ dT := TimeDuration readFrom:answer onError:[ nil ].
+ dT notNil ifTrue:[
+ LastIgnoreHaltDuration := dT.
+ self addIgnoredHaltForCount:nil orTimeDuration:dT orUntilShiftKey:false forAll:false.
+ ^ self.
+ ].
] loop
- "Modified: / 08-05-2011 / 10:20:11 / cg"
+ "Modified: / 27-01-2012 / 11:31:47 / cg"
!
openSettingsDialog
|settingsList settingsApp|
settingsList :=
- #(
- #('Debugger' #'AbstractSettingsApplication::DebuggerSettingsAppl' )
- #('Editor' #'AbstractSettingsApplication::EditSettingsAppl' )
- #('Syntax Color' #'AbstractSettingsApplication::SyntaxColorSettingsAppl' )
- #('Code Format' #'AbstractSettingsApplication::SourceCodeFormatSettingsAppl' )
- ).
+ #(
+ #('Debugger' #'AbstractSettingsApplication::DebuggerSettingsAppl' )
+ #('Editor' #'AbstractSettingsApplication::EditSettingsAppl' )
+ #('Syntax Color' #'AbstractSettingsApplication::SyntaxColorSettingsAppl' )
+ #('Code Format' #'AbstractSettingsApplication::SourceCodeFormatSettingsAppl' )
+ ).
settingsApp := SettingsDialog new.
"/ settingsApp requestor:self.
@@ -4577,8 +4606,8 @@
"quick terminate - the process will get no chance for cleanup actions"
inspecting ifTrue:[
- self processPerform:#terminateNoSignal.
- ^ self
+ self processPerform:#terminateNoSignal.
+ ^ self
].
steppedContext := wrapperContext := nil.
@@ -4590,11 +4619,11 @@
"/ not reached (normally)
inspecting ifFalse:[
- 'DebugView [warning]: quick terminate failed' errorPrintCR.
- (self confirm:'Regular quick terminate failed - do it the hard way ?') ifTrue:[
- Debugger newDebugger.
- Processor activeProcess terminateNoSignal.
- ]
+ 'DebugView [warning]: quick terminate failed' errorPrintCR.
+ (self confirm:'Regular quick terminate failed - do it the hard way ?') ifTrue:[
+ Debugger newDebugger.
+ Processor activeProcess terminateNoSignal.
+ ]
].
terminateButton turnOff.
@@ -4605,9 +4634,9 @@
"remove all trace & breakpoints - if any"
(MessageTracer notNil and:[MessageTracer isLoaded]) ifTrue:[
- self withExecuteCursorDo:[
- MessageTracer unwrapAllMethods
- ]
+ self withExecuteCursorDo:[
+ MessageTracer unwrapAllMethods
+ ]
]
"Modified: / 21.5.1998 / 01:44:43 / cg"
@@ -4619,18 +4648,18 @@
|implementorClass method|
selectedContext isNil ifTrue:[
- ^ self showError:'** select a context first **'
+ ^ self showError:'** select a context first **'
].
(MessageTracer isNil or:[MessageTracer isLoaded not]) ifTrue:[
- ^ self
+ ^ self
].
implementorClass := selectedContext methodClass.
implementorClass notNil ifTrue:[
- method := implementorClass compiledMethodAt:selectedContext selector.
- (method notNil and:[method isBreakpointed]) ifTrue:[
- method clearBreakPoint
- ]
+ method := implementorClass compiledMethodAt:selectedContext selector.
+ (method notNil and:[method isBreakpointed]) ifTrue:[
+ method clearBreakPoint
+ ]
].
contextView middleButtonMenu disable:#removeBreakpoint.
contextView middleButtonMenu enable:#addBreakpoint.
@@ -4642,11 +4671,11 @@
|con mthd|
contextView selection notNil ifTrue:[
- (contextView selectionValue startsWith:'**') ifFalse:[
- con := contextArray at:(contextView selection).
- mthd := con methodHome method.
- ^ mthd notNil and:[mthd isWrapped]
- ]
+ (contextView selectionValue startsWith:'**') ifFalse:[
+ con := contextArray at:(contextView selection).
+ mthd := con methodHome method.
+ ^ mthd notNil and:[mthd isWrapped]
+ ]
].
^ false.
!
@@ -4668,8 +4697,8 @@
"double the number of contexts shown"
contextArray notNil ifTrue:[
- nChainShown := nChainShown * 2.
- self redisplayBacktrace.
+ nChainShown := nChainShown * 2.
+ self redisplayBacktrace.
]
"Modified: / 17.11.2001 / 20:14:31 / cg"
@@ -4732,8 +4761,8 @@
|selector|
selector := Dialog
- request:'Skip until entering what (matchpattern):'
- initialAnswer:self goodSkipUntilSelector.
+ request:'Skip until entering what (matchpattern):'
+ initialAnswer:self goodSkipUntilSelector.
selector size == 0 ifTrue:[^ self].
stepUntilEntering := selector asSymbol.
@@ -4749,9 +4778,9 @@
toggleVerboseWalkback
verboseBacktrace ifFalse:[
- self showVerboseWalkback
+ self showVerboseWalkback
] ifTrue:[
- self showDenseWalkback
+ self showDenseWalkback
].
"Modified: / 17.11.2001 / 20:07:45 / cg"
@@ -4835,9 +4864,9 @@
|s|
aContext selector == #doIt ifTrue:[
- aContext receiver isNil ifTrue:[
- ^ 'doIt' allBold
- ]
+ aContext receiver isNil ifTrue:[
+ ^ 'doIt' allBold
+ ]
].
s := Text new writeStream.
@@ -4856,17 +4885,17 @@
interval := self selectedInterval.
interval isEmpty ifTrue:[
- crsrPos := codeView characterPositionOfCursor.
- codeView characterUnderCursor isSeparator ifTrue:[
- crsrPos := (crsrPos - 1) max:1
- ].
- interval := crsrPos to:crsrPos.
+ crsrPos := codeView characterPositionOfCursor.
+ codeView characterUnderCursor isSeparator ifTrue:[
+ crsrPos := (crsrPos - 1) max:1
+ ].
+ interval := crsrPos to:crsrPos.
].
self
- withNodeValueAtInterval:interval
- do:[:value :description |
- self showValue:value
- ].
+ withNodeValueAtInterval:interval
+ do:[:value :description |
+ self showValue:value
+ ].
!
findNodeForInterval:interval
@@ -4892,14 +4921,14 @@
self obsoleteMethodWarning.
node := nil.
tree nodesDo:[:each |
- (each intersectsInterval:interval) ifTrue:[
- (node isNil or:[node == each parent]) ifTrue:[
- node := each
- ] ifFalse:[
- (node parent notNil
- and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
- ]
- ]
+ (each intersectsInterval:interval) ifTrue:[
+ (node isNil or:[node == each parent]) ifTrue:[
+ node := each
+ ] ifFalse:[
+ (node parent notNil
+ and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
+ ]
+ ]
].
^ node
!
@@ -4912,7 +4941,7 @@
current := selectedContext selector.
current isNil ifTrue:[^ nil].
('change:*' match:current) ifTrue:[
- ^ 'update:*'
+ ^ 'update:*'
].
^ nil
!
@@ -4937,8 +4966,8 @@
"let inspected process do something, then update the context list"
inspectedProcess isDead ifTrue:[
- self showTerminated.
- ^ self
+ self showTerminated.
+ ^ self
].
inspectedProcess interruptWith:aBlock.
"
@@ -4962,8 +4991,8 @@
"do something, then update the context list"
inspectedProcess isDead ifTrue:[
- self showTerminated.
- ^ self
+ self showTerminated.
+ ^ self
].
inspectedProcess perform:aMessage.
@@ -4981,30 +5010,30 @@
|oldSelection oldContext con idx|
contextArray notNil ifTrue:[
- self withExecuteCursorDo:[
- oldSelection := contextView selection.
- oldSelection notNil ifTrue:[
- oldContext := contextArray at:oldSelection ifAbsent:nil.
- ].
-
- con := firstContext.
+ self withExecuteCursorDo:[
+ oldSelection := contextView selection.
+ oldSelection notNil ifTrue:[
+ oldContext := contextArray at:oldSelection ifAbsent:nil.
+ ].
+
+ con := firstContext.
"/ con := contextArray at:1.
- "/ force redeisplay, even if same by changing the first entry
- contextArray size > 0 ifTrue:[
- contextArray at:1 put:nil.
- ].
- self setContext:con.
-
- oldContext isNil ifTrue:[
- idx := oldSelection
- ] ifFalse:[
- idx := contextArray identityIndexOf:oldContext ifAbsent:nil.
- ].
- contextView setSelection:idx.
- idx notNil ifTrue:[
- self showSelection:idx
- ]
- ]
+ "/ force redeisplay, even if same by changing the first entry
+ contextArray size > 0 ifTrue:[
+ contextArray at:1 put:nil.
+ ].
+ self setContext:con.
+
+ oldContext isNil ifTrue:[
+ idx := oldSelection
+ ] ifFalse:[
+ idx := contextArray identityIndexOf:oldContext ifAbsent:nil.
+ ].
+ contextView setSelection:idx.
+ idx notNil ifTrue:[
+ self showSelection:idx
+ ]
+ ]
]
"Created: / 10.1.1997 / 21:36:46 / cg"
@@ -5018,16 +5047,16 @@
showError:message
codeView contents:(resources string:message).
shown ifTrue:[
- exclusive ifTrue:[
- "/ consider this a kludge:
- "/ if exclusive, cannot use flash, since it suspends
- "/ (but we cannot suspend here ...)
- codeView redrawInverted. device flush.
- OperatingSystem millisecondDelay:200.
- codeView redraw
- ] ifFalse:[
- codeView flash
- ]
+ exclusive ifTrue:[
+ "/ consider this a kludge:
+ "/ if exclusive, cannot use flash, since it suspends
+ "/ (but we cannot suspend here ...)
+ codeView redrawInverted. device flush.
+ OperatingSystem millisecondDelay:200.
+ codeView redraw
+ ] ifFalse:[
+ codeView flash
+ ]
]
"Modified: / 18.11.2001 / 00:01:13 / cg"
@@ -5060,30 +5089,30 @@
m := contextView middleButtonMenu.
m notNil ifTrue:[
- self updateMenuItems.
-
- (inspecting or:[AbortOperationRequest isHandledIn:aContext]) ifTrue:[
- abortButton enable.
- m enable:#doAbort.
- ] ifFalse:[
- abortButton disable.
- m disable:#doAbort.
- ].
- exclusive ifTrue:[
- terminateButton disable.
- m disable:#doTerminate.
- ] ifFalse:[
- terminateButton enable.
- m enable:#doTerminate.
- ].
+ self updateMenuItems.
+
+ (inspecting or:[AbortOperationRequest isHandledIn:aContext]) ifTrue:[
+ abortButton enable.
+ m enable:#doAbort.
+ ] ifFalse:[
+ abortButton disable.
+ m disable:#doAbort.
+ ].
+ exclusive ifTrue:[
+ terminateButton disable.
+ m disable:#doTerminate.
+ ] ifFalse:[
+ terminateButton enable.
+ m enable:#doTerminate.
+ ].
].
mayProceed == false ifTrue:[
- continueButton disable.
- m notNil ifTrue:[m disable:#doContinue].
+ continueButton disable.
+ m notNil ifTrue:[m disable:#doContinue].
] ifFalse:[
- continueButton enable.
- m notNil ifTrue:[m enable:#doContinue]
+ continueButton enable.
+ m notNil ifTrue:[m enable:#doContinue]
].
"Created: / 06-07-2011 / 12:24:53 / cg"
@@ -5093,24 +5122,24 @@
|oldContext idx|
inspectedProcess state == #dead ifTrue:[
- self showTerminated.
- ^ self
+ self showTerminated.
+ ^ self
].
oldContext := selectedContext.
[
- (self setContextSkippingInterruptContexts:inspectedProcess suspendedContext) ifTrue:[
- oldContext notNil ifTrue:[
- contextArray notNil ifTrue:[
- idx := contextArray identityIndexOf:oldContext.
- idx ~~ 0 ifTrue:[
- self showSelection:idx
- ] ifFalse:[
- codeView contents:('** context returned **')
- ]
- ]
- ]
- ].
+ (self setContextSkippingInterruptContexts:inspectedProcess suspendedContext) ifTrue:[
+ oldContext notNil ifTrue:[
+ contextArray notNil ifTrue:[
+ idx := contextArray identityIndexOf:oldContext.
+ idx ~~ 0 ifTrue:[
+ self showSelection:idx
+ ] ifFalse:[
+ codeView contents:('** context returned **')
+ ]
+ ]
+ ]
+ ].
] valueUninterruptably.
"Modified: 20.10.1996 / 18:11:24 / cg"
@@ -5124,43 +5153,43 @@
"
m := contextView middleButtonMenu.
m notNil ifTrue:[
- m disable:#removeBreakpoint.
- m disable:#addBreakpoint.
- canShowMore ifFalse:[
- m disable:#showMore
- ].
-
- selectedContext notNil ifTrue:[
- m enableAll:#(browseImplementors browseSenders inspectContext skip skipForReturn).
-
- mthd := selectedContext method.
- mthd notNil ifTrue:[
- cls := mCls := mthd containingClass.
- mthd isBreakpointed ifTrue:[
- m enable:#removeBreakpoint.
- ] ifFalse:[
- m enable:#addBreakpoint.
- ]
- ].
- rCls := selectedContext receiver class.
- cls isNil ifTrue:[
- cls := rCls
- ].
- cls notNil ifTrue:[
- m enableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
- rCls == mCls ifTrue:[
- m disable:#browseReceiversClass
- ].
- mCls isNil ifTrue:[
- m disable:#browseImplementingClass
- ]
-
- ] ifFalse:[
- m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
- ].
- ] ifFalse:[
- m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
- ]
+ m disable:#removeBreakpoint.
+ m disable:#addBreakpoint.
+ canShowMore ifFalse:[
+ m disable:#showMore
+ ].
+
+ selectedContext notNil ifTrue:[
+ m enableAll:#(browseImplementors browseSenders inspectContext skip skipForReturn).
+
+ mthd := selectedContext method.
+ mthd notNil ifTrue:[
+ cls := mCls := mthd containingClass.
+ mthd isBreakpointed ifTrue:[
+ m enable:#removeBreakpoint.
+ ] ifFalse:[
+ m enable:#addBreakpoint.
+ ]
+ ].
+ rCls := selectedContext receiver class.
+ cls isNil ifTrue:[
+ cls := rCls
+ ].
+ cls notNil ifTrue:[
+ m enableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
+ rCls == mCls ifTrue:[
+ m disable:#browseReceiversClass
+ ].
+ mCls isNil ifTrue:[
+ m disable:#browseImplementingClass
+ ]
+
+ ] ifFalse:[
+ m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
+ ].
+ ] ifFalse:[
+ m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
+ ]
]
!
@@ -5169,17 +5198,17 @@
"/interval printCR.
Error
- handle:[:ex | ]
- do:[
- [
- node := self findNodeForInterval:interval
- ] valueWithWatchDog:[ ^ self ] afterMilliseconds:50.
- ].
+ handle:[:ex | ]
+ do:[
+ [
+ node := self findNodeForInterval:interval
+ ] valueWithWatchDog:[ ^ self ] afterMilliseconds:50.
+ ].
node isNil ifTrue:[ ^ self ].
node isVariable ifFalse:[
- "/ Transcript showCR:node.
- ^ self
+ "/ Transcript showCR:node.
+ ^ self
].
nm := node name.
@@ -5189,152 +5218,152 @@
receiver := actualContext methodHome receiver.
(nm = 'self') ifTrue:[
- aBlock value:receiver value:'receiver' allBold.
- ^ self
+ aBlock value:receiver value:'receiver' allBold.
+ ^ self
].
(nm = 'super') ifTrue:[
- aBlock value:receiver value:'receiver' allBold.
- ^ self
+ aBlock value:receiver value:'receiver' allBold.
+ ^ self
].
(nm = 'thisContext') ifTrue:[
- aBlock value:actualContext value:'context' allBold.
- ^ self
+ aBlock value:actualContext value:'context' allBold.
+ ^ self
].
definingNode := node whoDefines:nm.
definingNode isNil ifTrue:[
- (receiver class allInstVarNames includes:nm) ifTrue:[
+ (receiver class allInstVarNames includes:nm) ifTrue:[
"/aBlock value:'xIII' value:'instVar'.
- receiver class isMetaclass ifTrue:[
- aBlock value:(receiver instVarNamed:nm) value:'classInstVar ',nmBold.
- ] ifFalse:[
- aBlock value:(receiver instVarNamed:nm) value:'instVar ',nmBold.
- ].
- ^ self
- ].
-
- receiversNonMetaClass := receiver class theNonMetaclass.
- (receiversNonMetaClass privateClasses contains:[:cls | cls nameWithoutPrefix = nm]) ifTrue:[
- aBlock value:'' value:'private class ',nmBold.
- ^ self
- ].
- (receiversNonMetaClass classVarNames includes:nm) ifTrue:[
- aBlock value:((currentMethod mclass ? receiversNonMetaClass) theNonMetaclass classVarAt:nm) value:'classVar ',nmBold.
- ^ self
- ].
- receiversNonMetaClass sharedPoolNames do:[:eachPoolName |
- |pool|
-
- pool := Smalltalk at:eachPoolName.
- pool isNil ifTrue:[ pool := receiversNonMetaClass topNameSpace at:eachPoolName].
- (pool classVarNames includes:nm) ifTrue:[
- aBlock value:(pool classVarAt:nm) value:'poolVar ',nm allBold,' in ',eachPoolName allBold,' '.
- ^ self
- ].
- ].
- (Smalltalk includesKey:nm asSymbol) ifTrue:[
- (Smalltalk at:nm asSymbol) isClass ifTrue:[
- aBlock value:'class: ',nmBold value:nil.
- ] ifFalse:[
- aBlock value:(Smalltalk at:nm asSymbol) value:'global ',nmBold.
- ].
- ^ self
- ].
- aBlock value:'' value:'unknown'.
- ^ self
+ receiver class isMetaclass ifTrue:[
+ aBlock value:(receiver instVarNamed:nm) value:'classInstVar ',nmBold.
+ ] ifFalse:[
+ aBlock value:(receiver instVarNamed:nm) value:'instVar ',nmBold.
+ ].
+ ^ self
+ ].
+
+ receiversNonMetaClass := receiver class theNonMetaclass.
+ (receiversNonMetaClass privateClasses contains:[:cls | cls nameWithoutPrefix = nm]) ifTrue:[
+ aBlock value:'' value:'private class ',nmBold.
+ ^ self
+ ].
+ (receiversNonMetaClass classVarNames includes:nm) ifTrue:[
+ aBlock value:((currentMethod mclass ? receiversNonMetaClass) theNonMetaclass classVarAt:nm) value:'classVar ',nmBold.
+ ^ self
+ ].
+ receiversNonMetaClass sharedPoolNames do:[:eachPoolName |
+ |pool|
+
+ pool := Smalltalk at:eachPoolName.
+ pool isNil ifTrue:[ pool := receiversNonMetaClass topNameSpace at:eachPoolName].
+ (pool classVarNames includes:nm) ifTrue:[
+ aBlock value:(pool classVarAt:nm) value:'poolVar ',nm allBold,' in ',eachPoolName allBold,' '.
+ ^ self
+ ].
+ ].
+ (Smalltalk includesKey:nm asSymbol) ifTrue:[
+ (Smalltalk at:nm asSymbol) isClass ifTrue:[
+ aBlock value:'class: ',nmBold value:nil.
+ ] ifFalse:[
+ aBlock value:(Smalltalk at:nm asSymbol) value:'global ',nmBold.
+ ].
+ ^ self
+ ].
+ aBlock value:'' value:'unknown'.
+ ^ self
].
"/definingNode printCR.
definingNode isMethod ifTrue:[
- varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
- varIdx ~~ 0 ifTrue:[
- Error
- handle:[:ex | ]
- do:[ aBlock value:(actualContext methodHome argAt:varIdx) value:'methodArg ',nmBold ].
- ^ self
- ].
- varIdx := definingNode temporaries findFirst:[:var | var name = nm].
- varIdx ~~ 0 ifTrue:[
- actualContext methodHome numVars >= varIdx ifTrue:[
- Error
- handle:[:ex | ]
- do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
- ^ self
- ]
- ].
+ varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
+ varIdx ~~ 0 ifTrue:[
+ Error
+ handle:[:ex | ]
+ do:[ aBlock value:(actualContext methodHome argAt:varIdx) value:'methodArg ',nmBold ].
+ ^ self
+ ].
+ varIdx := definingNode temporaries findFirst:[:var | var name = nm].
+ varIdx ~~ 0 ifTrue:[
+ actualContext methodHome numVars >= varIdx ifTrue:[
+ Error
+ handle:[:ex | ]
+ do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
+ ^ self
+ ]
+ ].
].
definingNode isBlock ifTrue:[
- varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
- (definingNode arguments contains:[:arg | arg name = nm]) ifTrue:[
- varIdx ~~ 0 ifTrue:[
- "/ am I in this block ?
- (actualContext lineNumber notNil
- and:[ definingNode lastLineNumber notNil
- and:[ (actualContext lineNumber
- between:definingNode firstLineNumber
- and:definingNode lastLineNumber)
- and:[ varIdx <= actualContext numArgs ] ]])
- ifTrue:[
- aBlock value:(actualContext argAt:varIdx) value:'blockArg ',nmBold .
- ^ self
- ].
+ varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
+ (definingNode arguments contains:[:arg | arg name = nm]) ifTrue:[
+ varIdx ~~ 0 ifTrue:[
+ "/ am I in this block ?
+ (actualContext lineNumber notNil
+ and:[ definingNode lastLineNumber notNil
+ and:[ (actualContext lineNumber
+ between:definingNode firstLineNumber
+ and:definingNode lastLineNumber)
+ and:[ varIdx <= actualContext numArgs ] ]])
+ ifTrue:[
+ aBlock value:(actualContext argAt:varIdx) value:'blockArg ',nmBold .
+ ^ self
+ ].
aBlock value:nmBold , ' is not in scope of selected context' value:nil.
- ^ self
- ]
- ].
+ ^ self
+ ]
+ ].
].
parentNode := definingNode parent.
[parentNode notNil] whileTrue:[
"/'isMethod ' print. parentNode isMethod printCR.
- parentNode isMethod ifTrue:[
- varIdx := parentNode temporaries findFirst:[:var | var name = nm].
- varIdx ~~ 0 ifTrue:[
- actualContext methodHome numVars >= varIdx ifTrue:[
- Error
- handle:[:ex | ]
- do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
- ^ self
- ]
- ].
- ].
+ parentNode isMethod ifTrue:[
+ varIdx := parentNode temporaries findFirst:[:var | var name = nm].
+ varIdx ~~ 0 ifTrue:[
+ actualContext methodHome numVars >= varIdx ifTrue:[
+ Error
+ handle:[:ex | ]
+ do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
+ ^ self
+ ]
+ ].
+ ].
"/'isBlock ' print. parentNode isBlock printCR.
- parentNode isBlock ifTrue:[
- "/ we dont have any information on the inlineability
- "/ of this block here (RBParser does not know what
- "/ the compiler does.
- "/ therefore, it is questionable if we can use the
- "/ contexts home context here.
- "/ am I in this block ?
- con := actualContext.
- [con notNil
- and:[ parentNode lastLineNumber notNil
- and:[ con lineNumber notNil
- and:[ con lineNumber
- between:parentNode firstLineNumber
- and:parentNode lastLineNumber ]]]] whileTrue:[
- con := con sender.
- ].
- con notNil ifTrue:[
- varIdx := parentNode arguments findFirst:[:arg | arg name = nm].
- varIdx ~~ 0 ifTrue:[
- Error
- handle:[:ex | ]
- do:[ aBlock value:(con argAt:varIdx) value:'blockArg ',nmBold ].
- ^ self
- ].
- varIdx := parentNode body temporaries findFirst:[:var | var name = nm].
- varIdx ~~ 0 ifTrue:[
- Error
- handle:[:ex | ]
- do:[ aBlock value:(con varAt:varIdx) value:'blockVar ',nmBold ].
- ^ self
- ].
- ].
- ].
- parentNode := parentNode parent.
+ parentNode isBlock ifTrue:[
+ "/ we dont have any information on the inlineability
+ "/ of this block here (RBParser does not know what
+ "/ the compiler does.
+ "/ therefore, it is questionable if we can use the
+ "/ contexts home context here.
+ "/ am I in this block ?
+ con := actualContext.
+ [con notNil
+ and:[ parentNode lastLineNumber notNil
+ and:[ con lineNumber notNil
+ and:[ con lineNumber
+ between:parentNode firstLineNumber
+ and:parentNode lastLineNumber ]]]] whileTrue:[
+ con := con sender.
+ ].
+ con notNil ifTrue:[
+ varIdx := parentNode arguments findFirst:[:arg | arg name = nm].
+ varIdx ~~ 0 ifTrue:[
+ Error
+ handle:[:ex | ]
+ do:[ aBlock value:(con argAt:varIdx) value:'blockArg ',nmBold ].
+ ^ self
+ ].
+ varIdx := parentNode body temporaries findFirst:[:var | var name = nm].
+ varIdx ~~ 0 ifTrue:[
+ Error
+ handle:[:ex | ]
+ do:[ aBlock value:(con varAt:varIdx) value:'blockVar ',nmBold ].
+ ^ self
+ ].
+ ].
+ ].
+ parentNode := parentNode parent.
].
aBlock value:nmBold , ' is not in scope of selected context' value:nil.
@@ -5357,7 +5386,7 @@
!DebugView methodsFor:'private-breakpoints'!
-addIgnoredHaltForCount:countOrNil orTimeDuration:dTOrNil forAll:aBoolean
+addIgnoredHaltForCount:countOrNil orTimeDuration:dTOrNil orUntilShiftKey:untilShiftKey forAll:aBoolean
|haltingContext haltingMethod lineNrOfHalt|
aBoolean ifTrue:[
@@ -5375,9 +5404,9 @@
self class
ignoreHaltIn:haltingMethod at:lineNrOfHalt
- forCount:countOrNil orTimeDuration:dTOrNil
-
- "Created: / 08-05-2011 / 10:20:31 / cg"
+ forCount:countOrNil orTimeDuration:dTOrNil orUntilShiftKey:untilShiftKey
+
+ "Created: / 27-01-2012 / 11:31:12 / cg"
!
canAddBreakpoint
@@ -5447,7 +5476,7 @@
Otherwise, the GC will not be able to release it."
windowGroup notNil ifTrue:[
- windowGroup setProcess:nil.
+ windowGroup setProcess:nil.
].
self releaseDebuggee.
@@ -5458,15 +5487,15 @@
"/ only cache if I am on the Display
"/
device == Display ifTrue:[
- exclusive ifTrue:[
- CachedExclusive := self
- ] ifFalse:[
- CachedDebugger := self
- ].
+ exclusive ifTrue:[
+ CachedExclusive := self
+ ] ifFalse:[
+ CachedDebugger := self
+ ].
].
ObjectMemory stepInterruptHandler == self ifTrue:[
- ObjectMemory stepInterruptHandler:nil
+ ObjectMemory stepInterruptHandler:nil
].
"Modified: 10.7.1997 / 15:50:46 / stefan"
@@ -5477,10 +5506,10 @@
"tell wether we are a cached debugger"
CachedExclusive == self ifTrue:[
- ^ true.
+ ^ true.
].
CachedDebugger == self ifTrue:[
- ^ true.
+ ^ true.
].
^ false.
@@ -5520,13 +5549,13 @@
cachable := false.
CachedExclusive == self ifTrue:[
- CachedExclusive := nil.
+ CachedExclusive := nil.
].
CachedDebugger == self ifTrue:[
- CachedDebugger := nil.
+ CachedDebugger := nil.
].
OpenDebuggers notNil ifTrue:[
- OpenDebuggers remove:self ifAbsent:[].
+ OpenDebuggers remove:self ifAbsent:[].
].
"Modified: 31.7.1997 / 21:20:11 / cg"
@@ -5805,12 +5834,12 @@
con := aContext.
verboseBacktrace ifFalse:[
- (con notNil and:[con selector == #threadSwitch:]) ifTrue:[
- con := con sender.
- (con notNil and:[con selector == #timerInterrupt]) ifTrue:[
- con := con sender.
- ].
- ].
+ (con notNil and:[con selector == #threadSwitch:]) ifTrue:[
+ con := con sender.
+ (con notNil and:[con selector == #timerInterrupt]) ifTrue:[
+ con := con sender.
+ ].
+ ].
].
^ self setContext:con releaseInspectors:true
@@ -5836,48 +5865,48 @@
"/ to avoid firing/waiting the lazy or future
recIsException := (rec isLazyValue not) and:[rec isException].
aContext sender notNil ifTrue:[
- senderRec := aContext sender receiver
+ senderRec := aContext sender receiver
].
DebuggingDebugger == true ifTrue:[
- 'showingContext1: (' print. aContext print.
- ') calling: (' print. calledContext print.
- ')' printCR.
+ 'showingContext1: (' print. aContext print.
+ ') calling: (' print. calledContext print.
+ ')' printCR.
].
(#(doCallHandler: doRaise
) includes:sel)
- ifTrue:[
- recIsException ifTrue:[ ^ false].
- ].
+ ifTrue:[
+ recIsException ifTrue:[ ^ false].
+ ].
(#(raise raiseRequest
) includes:sel)
- ifTrue:[
- recIsException ifTrue:[
- (senderRec isLazyValue not
- and:[ senderRec isExceptionCreator]) ifTrue:[^ false].
- ].
- ].
+ ifTrue:[
+ recIsException ifTrue:[
+ (senderRec isLazyValue not
+ and:[ senderRec isExceptionCreator]) ifTrue:[^ false].
+ ].
+ ].
(#(doWhile:
) includes:sel)
- ifTrue:[
- rec isBlock ifTrue:[
- true "aContext sender isBlockContext" ifTrue:[^ false].
- ].
- ].
+ ifTrue:[
+ rec isBlock ifTrue:[
+ true "aContext sender isBlockContext" ifTrue:[^ false].
+ ].
+ ].
calledContext notNil ifTrue:[
- calledSel := calledContext selector.
- calledRec := calledContext receiver.
-
- calledRec isBlock ifTrue:[
- (calledSel == #ensure:) ifTrue:[^ false].
- (calledSel == #ifCurtailed:) ifTrue:[^ false].
- ].
- (calledSel == #handle:do:) ifTrue:[^ false].
- (calledSel == #answer:do:) ifTrue:[^ false].
+ calledSel := calledContext selector.
+ calledRec := calledContext receiver.
+
+ calledRec isBlock ifTrue:[
+ (calledSel == #ensure:) ifTrue:[^ false].
+ (calledSel == #ifCurtailed:) ifTrue:[^ false].
+ ].
+ (calledSel == #handle:do:) ifTrue:[^ false].
+ (calledSel == #answer:do:) ifTrue:[^ false].
"/ calledRec isLazyValue ifFalse:[
"/ ((calledSel == #doWhile:)
@@ -5896,28 +5925,28 @@
].
(#(handleDo:) includes:sel)
- ifTrue:[
- (calledRec isLazyValue not and:[calledRec isExceptionHandler]) ifTrue:[^ false].
- ].
+ ifTrue:[
+ (calledRec isLazyValue not and:[calledRec isExceptionHandler]) ifTrue:[^ false].
+ ].
(#(
- withCursor:do:
- withWaitCursorDo:
+ withCursor:do:
+ withWaitCursorDo:
) includes:sel)
- ifTrue:[
- (mthdClass == TopView) ifTrue:[^ false].
- (mthdClass == ApplicationModel) ifTrue:[^ false].
- (mthdClass == WindowGroup) ifTrue:[^ false].
- ].
+ ifTrue:[
+ (mthdClass == TopView) ifTrue:[^ false].
+ (mthdClass == ApplicationModel) ifTrue:[^ false].
+ (mthdClass == WindowGroup) ifTrue:[^ false].
+ ].
(#(
- wait
- waitWithTimeout:
- waitWithTimeoutMs:
+ wait
+ waitWithTimeout:
+ waitWithTimeoutMs:
) includes:sel)
- ifTrue:[
- (mthdClass == Semaphore) ifTrue:[^ false].
- (mthdClass == SemaphoreSet) ifTrue:[^ false].
- ].
+ ifTrue:[
+ (mthdClass == Semaphore) ifTrue:[^ false].
+ (mthdClass == SemaphoreSet) ifTrue:[^ false].
+ ].
^ true
@@ -5943,29 +5972,29 @@
sender := aContext sender.
sender notNil ifTrue:[
- senderSelector := sender selector.
- senderReceiver := sender receiver.
- senderReceiverClass := senderReceiver class.
+ senderSelector := sender selector.
+ senderReceiver := sender receiver.
+ senderReceiverClass := senderReceiver class.
].
sel == #withCursor:do: ifTrue:[
- (mClass == WindowGroup) ifTrue:[^ false].
- (mClass == TopView) ifTrue:[^ false].
+ (mClass == WindowGroup) ifTrue:[^ false].
+ (mClass == TopView) ifTrue:[^ false].
].
(sel == #withExecuteCursorDo:
or:[sel == #withWaitCursorDo:]) ifTrue:[
- (mClass == DisplaySurface) ifTrue:[^ false].
+ (mClass == DisplaySurface) ifTrue:[^ false].
].
(sel == #do:
or:[sel == #from:to:do:
or:[sel == #keysAndValuesDo:
or:[sel == #doWithIndex:]]]) ifTrue:[
- mClass == Array ifTrue:[^ false].
- mClass == OrderedCollection ifTrue:[^ false].
- mClass == Set ifTrue:[^ false].
- mClass == Dictionary ifTrue:[^ false].
- mClass == Interval ifTrue:[^ false].
+ mClass == Array ifTrue:[^ false].
+ mClass == OrderedCollection ifTrue:[^ false].
+ mClass == Set ifTrue:[^ false].
+ mClass == Dictionary ifTrue:[^ false].
+ mClass == Interval ifTrue:[^ false].
].
(sel == #perform:
or:[sel == #perform:with:
@@ -5973,40 +6002,40 @@
or:[sel == #perform:with:with:with:
or:[sel == #perform:with:with:with:with:]]]])
ifTrue:[
- nesting == 0 ifTrue:[^ true].
- mClass == Array ifTrue:[^ false].
- mClass == OrderedCollection ifTrue:[^ false].
+ nesting == 0 ifTrue:[^ true].
+ mClass == Array ifTrue:[^ false].
+ mClass == OrderedCollection ifTrue:[^ false].
].
sel == #valueWithReceiver:arguments:selector:search:sender: ifTrue:[^ false].
(mClass == Object) ifTrue:[
- (sel startsWith:'perform:') ifTrue:[^ false]
+ (sel startsWith:'perform:') ifTrue:[^ false]
].
(mClass == Method) ifTrue:[
- (sel startsWith:'valueWithReceiver:') ifTrue:[^ false]
+ (sel startsWith:'valueWithReceiver:') ifTrue:[^ false]
].
(mClass == SmallInteger) ifTrue:[
- (sel == #to:do:) ifTrue:[^ false].
- (sel == #to:by:do:) ifTrue:[^ false].
+ (sel == #to:do:) ifTrue:[^ false].
+ (sel == #to:by:do:) ifTrue:[^ false].
].
(mClass == Block) ifTrue:[
- sel == #ensure: ifTrue:[^ false].
- sel == #ifCurtailed: ifTrue:[^ false].
- sel == #valueNowOrOnUnwindDo: ifTrue:[^ false].
- sel == #valueOnUnwindDo: ifTrue:[^ false].
- sel == #on:do: ifTrue:[^ false].
-
- sel == #value ifTrue:[^ false].
- sel == #value: ifTrue:[^ false].
- sel == #value:value: ifTrue:[^ false].
- sel == #value:value:value: ifTrue:[^ false].
- sel == #value:value:value:value: ifTrue:[^ false].
- sel == #value:value:value:value:Value: ifTrue:[^ false].
- sel == #value:value:value:value:value:value: ifTrue:[^ false].
+ sel == #ensure: ifTrue:[^ false].
+ sel == #ifCurtailed: ifTrue:[^ false].
+ sel == #valueNowOrOnUnwindDo: ifTrue:[^ false].
+ sel == #valueOnUnwindDo: ifTrue:[^ false].
+ sel == #on:do: ifTrue:[^ false].
+
+ sel == #value ifTrue:[^ false].
+ sel == #value: ifTrue:[^ false].
+ sel == #value:value: ifTrue:[^ false].
+ sel == #value:value:value: ifTrue:[^ false].
+ sel == #value:value:value:value: ifTrue:[^ false].
+ sel == #value:value:value:value:Value: ifTrue:[^ false].
+ sel == #value:value:value:value:value:value: ifTrue:[^ false].
].
aContext isBlockContext ifTrue:[
@@ -6024,40 +6053,40 @@
"/ ]
"/ ]
- aContext home notNil ifTrue:[
- aContext home receiver isLazyValue ifFalse:[
- (aContext home receiver isMemberOf:Semaphore) ifTrue:[
- (aContext home selector == #wait) ifTrue:[^ false].
- (aContext home selector == #waitWithTimeoutMs:) ifTrue:[^ false].
- ]
- ]
- ]
+ aContext home notNil ifTrue:[
+ aContext home receiver isLazyValue ifFalse:[
+ (aContext home receiver isMemberOf:Semaphore) ifTrue:[
+ (aContext home selector == #wait) ifTrue:[^ false].
+ (aContext home selector == #waitWithTimeoutMs:) ifTrue:[^ false].
+ ]
+ ]
+ ]
].
(rec isExceptionHandler) ifTrue:[
- sel == #handle:do: ifTrue:[^ false].
- sel == #handleDo: ifTrue:[^ false].
- (sel startsWith:#raise) ifTrue:[^ false].
- sel == #answer:do: ifTrue:[^ false].
+ sel == #handle:do: ifTrue:[^ false].
+ sel == #handleDo: ifTrue:[^ false].
+ (sel startsWith:#raise) ifTrue:[^ false].
+ sel == #answer:do: ifTrue:[^ false].
].
(rec isLazyValue not and:[ rec isException] ) ifTrue:[
- sel == #doRaise ifTrue:[^ false].
- sel == #doCallHandler: ifTrue:[^ false].
- (sel == #raise or:[sel == #raiseRequest]) ifTrue:[
- senderReceiverClass == Signal ifTrue:[^ false].
- ]
+ sel == #doRaise ifTrue:[^ false].
+ sel == #doCallHandler: ifTrue:[^ false].
+ (sel == #raise or:[sel == #raiseRequest]) ifTrue:[
+ senderReceiverClass == Signal ifTrue:[^ false].
+ ]
].
(mClass == Context) ifTrue:[
- sel == #unwind ifTrue:[^ false].
- sel == #unwind: ifTrue:[^ false].
+ sel == #unwind ifTrue:[^ false].
+ sel == #unwind: ifTrue:[^ false].
].
(mClass == ProcessorScheduler) ifTrue:[
- sel == #interruptActive ifTrue:[^ false].
- sel == #threadSwitch: ifTrue:[^ false].
- sel == #suspend: ifTrue:[^ false].
+ sel == #interruptActive ifTrue:[^ false].
+ sel == #threadSwitch: ifTrue:[^ false].
+ sel == #suspend: ifTrue:[^ false].
].
mClass == Process ifTrue:[
- sel == #suspendWithState: ifTrue:[^ false].
+ sel == #suspendWithState: ifTrue:[^ false].
].
^ true.
@@ -6069,18 +6098,18 @@
controlLoop
"this is a kludge:
- start a dispatchloop which exits when
- either continue, return or step is pressed
+ start a dispatchloop which exits when
+ either continue, return or step is pressed
"
haveControl := true.
[
- [haveControl] whileTrue:[
- self controlLoopCatchingErrors
- ].
+ [haveControl] whileTrue:[
+ self controlLoopCatchingErrors
+ ].
] ensure:[
- catchBlock := nil.
- haveControl := false
+ catchBlock := nil.
+ haveControl := false
].
"Modified: 9.7.1996 / 18:29:09 / cg"
@@ -6094,21 +6123,21 @@
catchBlock := [catchBlock := nil. ^ nil].
(exclusive or:[windowGroup isNil]) ifTrue:[
- "if we do not have multiple processes or its a system process
- we start another dispatch loop, which exits when
- either continue, return or step is pressed
- or (via the catchBlock) if an error occurs.
- Since our display is an extra exclusive one,
- all processing for normal views stops here ...
- "
-
- WindowGroup setActiveGroup:windowGroup.
- SignalSet anySignal handle:[:ex |
- |signal|
-
- signal := ex signal.
-
- self showError:'*** Error in modal debugger:
+ "if we do not have multiple processes or its a system process
+ we start another dispatch loop, which exits when
+ either continue, return or step is pressed
+ or (via the catchBlock) if an error occurs.
+ Since our display is an extra exclusive one,
+ all processing for normal views stops here ...
+ "
+
+ WindowGroup setActiveGroup:windowGroup.
+ SignalSet anySignal handle:[:ex |
+ |signal|
+
+ signal := ex signal.
+
+ self showError:'*** Error in modal debugger:
>>>> Signal: ' , signal printString , '
>>>> In: ' , ex suspendedContext printString , '
@@ -6129,75 +6158,75 @@
>>>> Message: ' , ex description , '
caught & ignored.'.
- ex return.
- ] do:[
- UserNotification handle:[:ex |
- (ex signal == ActivityNotificationSignal) ifTrue:[
- ex proceed
- ].
- self showError:ex description.
- ex proceed.
- ] do:[
- device dispatchModalWhile:[Processor activeProcess state:#debug.
- haveControl].
- ]
- ].
- WindowGroup setActiveGroup:nil.
+ ex return.
+ ] do:[
+ UserNotification handle:[:ex |
+ (ex signal == ActivityNotificationSignal) ifTrue:[
+ ex proceed
+ ].
+ self showError:ex description.
+ ex proceed.
+ ] do:[
+ device dispatchModalWhile:[Processor activeProcess state:#debug.
+ haveControl].
+ ]
+ ].
+ WindowGroup setActiveGroup:nil.
] ifFalse:[
- "we do have multiple processes -
- simply enter the DebugViews-Windowgroup event loop.
- effectively suspending event processing for the currently
- active group.
- "
- SignalSet anySignal handle:[:ex |
- |answer signal eMsg|
-
- signal := ex signal.
-
- DebuggingDebugger ~~ true ifTrue:[
- (signal == ActivityNotification) ifTrue:[
- ex proceed
- ].
- "/
- "/ ignore exceptions which say they explicitly have to be ignored
- "/
- ex catchInDebugger ifTrue:[
- 'DebugView [info]: ',signal printString,'-signal in debugger cought for close' infoPrintCR.
- self destroy.
- ex reject
- ].
-
- "/
- "/ ignore recursive breakpoints
- "/
- (signal isControlInterrupt) ifTrue:[
- ignoreBreakpoints == true ifTrue:[
- 'DebugView [info]: halt/break in debugger ignored 1' infoPrintCR.
- ('DebugView [info]: ',ex suspendedContext printString) infoPrintCR.
- ex proceed
- ].
- ].
- (signal == TerminateProcessRequest) ifTrue:[
- "/ mhm - someone wants to shoot me down while debugging ...
- answer := Dialog
- choose:('Process termination signal arrived while debugging\\close debugger ?') withCRs
- labels:#( 'Ignore' 'Close & terminate' )
- values:#( #proceed #close )
- default:#close.
- answer == #close ifTrue:[
- self destroy.
- ex reject
- ].
- ex return.
- ].
- signal == RecursiveExceptionError ifTrue:[
- (ex parameter signal == BreakPointInterrupt)
- ifTrue:[
- 'DebugView [info]: recursive breakpoint in debugger ignored' infoPrintCR.
- ex proceed.
- ].
-
- self showError:'*** Recursive error in debugger:
+ "we do have multiple processes -
+ simply enter the DebugViews-Windowgroup event loop.
+ effectively suspending event processing for the currently
+ active group.
+ "
+ SignalSet anySignal handle:[:ex |
+ |answer signal eMsg|
+
+ signal := ex signal.
+
+ DebuggingDebugger ~~ true ifTrue:[
+ (signal == ActivityNotification) ifTrue:[
+ ex proceed
+ ].
+ "/
+ "/ ignore exceptions which say they explicitly have to be ignored
+ "/
+ ex catchInDebugger ifTrue:[
+ 'DebugView [info]: ',signal printString,'-signal in debugger cought for close' infoPrintCR.
+ self destroy.
+ ex reject
+ ].
+
+ "/
+ "/ ignore recursive breakpoints
+ "/
+ (signal isControlInterrupt) ifTrue:[
+ ignoreBreakpoints == true ifTrue:[
+ 'DebugView [info]: halt/break in debugger ignored 1' infoPrintCR.
+ ('DebugView [info]: ',ex suspendedContext printString) infoPrintCR.
+ ex proceed
+ ].
+ ].
+ (signal == TerminateProcessRequest) ifTrue:[
+ "/ mhm - someone wants to shoot me down while debugging ...
+ answer := Dialog
+ choose:('Process termination signal arrived while debugging\\close debugger ?') withCRs
+ labels:#( 'Ignore' 'Close & terminate' )
+ values:#( #proceed #close )
+ default:#close.
+ answer == #close ifTrue:[
+ self destroy.
+ ex reject
+ ].
+ ex return.
+ ].
+ signal == RecursiveExceptionError ifTrue:[
+ (ex parameter signal == BreakPointInterrupt)
+ ifTrue:[
+ 'DebugView [info]: recursive breakpoint in debugger ignored' infoPrintCR.
+ ex proceed.
+ ].
+
+ self showError:'*** Recursive error in debugger:
>>>> Signal: ' , ex signal printString , '
>>>> ' , ex parameter signal printString , '
@@ -6209,50 +6238,50 @@
>>>> Message: ' , ex description , '
caught & ignored.'.
- ex return
- ].
- ].
-
- self topView raiseDeiconified.
-
- eMsg := ex description.
- (ex signal isControlInterrupt) ifTrue:[
- eMsg := eMsg , Character cr asString , 'in ' , ex suspendedContext printString
- ].
- Dialog aboutToOpenBoxNotificationSignal
- handle:[:ex | ex proceed ]
- do:[
- answer := Dialog
- choose:('Error in debugger:\' withCRs , eMsg , '\\debug again ?' withCRs)
- labels:#( 'Proceed' 'Cancel' 'Debug' )
- values:#( #proceed #cancel #debug )
- default:#cancel.
- ].
- answer == #debug ifTrue:[
- 'DebugView [info]: cought exception - debugging' infoPrintCR.
- Debugger
- enterUnconditional:(ex suspendedContext)
- withMessage:'Error in debugger: ' , eMsg
- mayProceed:true.
- ex proceed.
- ].
- answer == #proceed ifTrue:[
- 'DebugView [info]: ignored exception - proceeding' infoPrintCR.
- ex proceed.
- ].
- 'DebugView [info]: cought exception - returning' infoPrintCR.
- ex return.
- ] do:[
- "/ make certain that sub-debuggers, inspectors etc.
- "/ come up on my device.
- Screen currentScreenQuerySignal answer:device
- do:[
- windowGroup
- eventLoopWhile:[Processor activeProcess state:#debug.
- true]
- onLeave:[]
- ]
- ].
+ ex return
+ ].
+ ].
+
+ self topView raiseDeiconified.
+
+ eMsg := ex description.
+ (ex signal isControlInterrupt) ifTrue:[
+ eMsg := eMsg , Character cr asString , 'in ' , ex suspendedContext printString
+ ].
+ Dialog aboutToOpenBoxNotificationSignal
+ handle:[:ex | ex proceed ]
+ do:[
+ answer := Dialog
+ choose:('Error in debugger:\' withCRs , eMsg , '\\debug again ?' withCRs)
+ labels:#( 'Proceed' 'Cancel' 'Debug' )
+ values:#( #proceed #cancel #debug )
+ default:#cancel.
+ ].
+ answer == #debug ifTrue:[
+ 'DebugView [info]: cought exception - debugging' infoPrintCR.
+ Debugger
+ enterUnconditional:(ex suspendedContext)
+ withMessage:'Error in debugger: ' , eMsg
+ mayProceed:true.
+ ex proceed.
+ ].
+ answer == #proceed ifTrue:[
+ 'DebugView [info]: ignored exception - proceeding' infoPrintCR.
+ ex proceed.
+ ].
+ 'DebugView [info]: cought exception - returning' infoPrintCR.
+ ex return.
+ ] do:[
+ "/ make certain that sub-debuggers, inspectors etc.
+ "/ come up on my device.
+ Screen currentScreenQuerySignal answer:device
+ do:[
+ windowGroup
+ eventLoopWhile:[Processor activeProcess state:#debug.
+ true]
+ onLeave:[]
+ ]
+ ].
].
catchBlock := nil.
@@ -6268,16 +6297,16 @@
codeView modified ifFalse:[^ false].
currentMethod isNil ifTrue:[
- ^ false
+ ^ false
].
source := currentMethod source.
source notNil ifTrue:[
- source string = codeView contents string ifTrue:[
- ^ false
- ].
- (source string withTabsExpanded:8) = (codeView contents string withTabsExpanded:8) ifTrue:[
- ^ false
- ].
+ source string = codeView contents string ifTrue:[
+ ^ false
+ ].
+ (source string withTabsExpanded:8) = (codeView contents string withTabsExpanded:8) ifTrue:[
+ ^ false
+ ].
].
^ true
!
@@ -6291,11 +6320,11 @@
(newSelection notNil
and:[newSelection = contextView selection]) ifTrue:[
- ^ true
+ ^ true
].
(self confirm:('Code modified - change selection anyway ?')) ifFalse:[
- ^ false
+ ^ false
].
codeView modified:false.
@@ -6328,78 +6357,78 @@
|con top newMethod|
codeView withWaitCursorDo:[
- "
- find the method-home context for this one
- "
- doUnwind ifTrue:[
- con := selectedContext.
- top := con.
- [con notNil] whileTrue:[
- (con methodHome == selectedContext) ifTrue:[
- top := con
- ].
- con := con sender
- ].
- ].
-
- "/
- "/ provide the classes nameSpace on a query;
- "/ in case we accept while in another nameSpace context,
- "/ (but for a class which is somewhere else)
- "/
- (Class updateChangeFileQuerySignal,
- Class updateChangeListQuerySignal,
- Class updateHistoryLineQuerySignal) answer:true
- do:[
- Class nameSpaceQuerySignal
- answer:(aClass nameSpace)
- do:[
- Class packageQuerySignal
- answer:(aClass package ? PackageId noProjectID)
- do:[
- codeView contents:someCode.
- newMethod := aClass compilerClass
- compile:someCode
- forClass:aClass
- inCategory:category
- notifying:codeView.
- ].
- ].
- ].
-
- inspecting ifFalse:[
- "
- if it worked, remove everything up to and including top
- from context chain
- "
- (newMethod notNil and:[newMethod ~~ #Error]) ifTrue:[
- codeView modified:false.
-
- doUnwind ifTrue:[
- selectedContext canReturn ifTrue:[
- self setContext:(top "sender").
- exitAction := #restart.
- selectedContext setLineNumber:1.
- self doRestart.
- ] ifFalse:[
- self setContext:(top sender).
- exitAction := #return.
- ].
-
- "
- continue/step is no longer possible
- "
- "/ continueButton disable.
- "/ canContinue := false.
- ].
-
- contextView selection:1.
- "/ self showSelection:1.
- "/ contextView makeSelectionVisible. "/ scrollToLine:(selection - 1)
- ] ifFalse:[
- ^ cancelAction value
- ]
- ].
+ "
+ find the method-home context for this one
+ "
+ doUnwind ifTrue:[
+ con := selectedContext.
+ top := con.
+ [con notNil] whileTrue:[
+ (con methodHome == selectedContext) ifTrue:[
+ top := con
+ ].
+ con := con sender
+ ].
+ ].
+
+ "/
+ "/ provide the classes nameSpace on a query;
+ "/ in case we accept while in another nameSpace context,
+ "/ (but for a class which is somewhere else)
+ "/
+ (Class updateChangeFileQuerySignal,
+ Class updateChangeListQuerySignal,
+ Class updateHistoryLineQuerySignal) answer:true
+ do:[
+ Class nameSpaceQuerySignal
+ answer:(aClass nameSpace)
+ do:[
+ Class packageQuerySignal
+ answer:(aClass package ? PackageId noProjectID)
+ do:[
+ codeView contents:someCode.
+ newMethod := aClass compilerClass
+ compile:someCode
+ forClass:aClass
+ inCategory:category
+ notifying:codeView.
+ ].
+ ].
+ ].
+
+ inspecting ifFalse:[
+ "
+ if it worked, remove everything up to and including top
+ from context chain
+ "
+ (newMethod notNil and:[newMethod ~~ #Error]) ifTrue:[
+ codeView modified:false.
+
+ doUnwind ifTrue:[
+ selectedContext canReturn ifTrue:[
+ self setContext:(top "sender").
+ exitAction := #restart.
+ selectedContext setLineNumber:1.
+ self doRestart.
+ ] ifFalse:[
+ self setContext:(top sender).
+ exitAction := #return.
+ ].
+
+ "
+ continue/step is no longer possible
+ "
+ "/ continueButton disable.
+ "/ canContinue := false.
+ ].
+
+ contextView selection:1.
+ "/ self showSelection:1.
+ "/ contextView makeSelectionVisible. "/ scrollToLine:(selection - 1)
+ ] ifFalse:[
+ ^ cancelAction value
+ ]
+ ].
].
"Created: / 17-11-2001 / 21:50:55 / cg"
@@ -6489,9 +6518,9 @@
cls isNil ifTrue:[ ^ self ].
UserInformation handle:[:ex |
- ex proceed.
+ ex proceed.
] do:[
- DoWhatIMeanSupport codeCompletionForClass:cls context:selectedContext codeView:codeView.
+ DoWhatIMeanSupport codeCompletionForClass:cls context:selectedContext codeView:codeView.
].
!
@@ -6500,7 +6529,7 @@
Redefined here, to answer true, if exclusice Debugger, which cannot handle popup boxes"
(exclusive or:[windowGroup isNil]) ifTrue:[
- ^ true
+ ^ true
].
^ super confirm:aString.
!
@@ -6510,11 +6539,11 @@
Also sent to autoselect an interesting context on entry."
HaltInterrupt handle:[:ex |
- ignoreBreakpoints ifFalse:[ex reject].
- ('DebugView [info]: halt/breakpoint in debugger at %1 ignored [doShowSelection.]' bindWith:ex suspendedContext) infoPrintCR.
- ex proceed
+ ignoreBreakpoints ifFalse:[ex reject].
+ ('DebugView [info]: halt/breakpoint in debugger at %1 ignored [doShowSelection.]' bindWith:ex suspendedContext) infoPrintCR.
+ ex proceed
] do:[
- self updateForContext:lineNr
+ self updateForContext:lineNr
].
self updateMenuItems
@@ -6523,10 +6552,10 @@
hideStackInspector
stackInspector notNil ifTrue:[
- stackInspector destroy.
- stackInspector := nil.
- receiverInspector origin:(0.0 @ 0.0) corner:0.5 @ 1.0.
- contextInspector origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
+ stackInspector destroy.
+ stackInspector := nil.
+ receiverInspector origin:(0.0 @ 0.0) corner:0.5 @ 1.0.
+ contextInspector origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
]
!
@@ -6535,7 +6564,7 @@
sel := contextView selection.
sel notNil ifTrue:[
- self showSelection:sel
+ self showSelection:sel
]
"Created: / 18-06-2010 / 12:29:21 / cg"
@@ -6549,45 +6578,45 @@
evView := anEvent view.
evView notNil ifTrue:[
- focusView := evView windowGroup focusView.
- focusView isNil ifTrue:[
- focusView := evView.
- ].
-
- anEvent isKeyPressEvent ifTrue:[
- key := anEvent key.
- rawKey := anEvent rawKey.
-
- inCodeView := (focusView == codeView
- or:[focusView isComponentOf:codeView]).
- inCodeView ifTrue:[
- key == #CodeCompletion ifTrue:[
- "/ complete the word before/under the cursor.
- self sensor
- pushUserEvent:#codeCompletion
- for:self
- withArguments:#().
- ^ true
- ].
- ].
- ].
+ focusView := evView windowGroup focusView.
+ focusView isNil ifTrue:[
+ focusView := evView.
+ ].
+
+ anEvent isKeyPressEvent ifTrue:[
+ key := anEvent key.
+ rawKey := anEvent rawKey.
+
+ inCodeView := (focusView == codeView
+ or:[focusView isComponentOf:codeView]).
+ inCodeView ifTrue:[
+ key == #CodeCompletion ifTrue:[
+ "/ complete the word before/under the cursor.
+ self sensor
+ pushUserEvent:#codeCompletion
+ for:self
+ withArguments:#().
+ ^ true
+ ].
+ ].
+ ].
false ifTrue:[
- anEvent isButtonReleaseEvent ifTrue:[
- anEvent view == codeView ifTrue:[
- (RBParser notNil and:[RBParser isLoaded])
- ifTrue:[
- self sensor
- pushEvent:anEvent. "/ must be first in queue
-
- self sensor
- pushUserEvent:#explainSelection
- for:self
- withArguments:nil.
- ^ true "/ eaten
- ]
- ]
- ].
+ anEvent isButtonReleaseEvent ifTrue:[
+ anEvent view == codeView ifTrue:[
+ (RBParser notNil and:[RBParser isLoaded])
+ ifTrue:[
+ self sensor
+ pushEvent:anEvent. "/ must be first in queue
+
+ self sensor
+ pushUserEvent:#explainSelection
+ for:self
+ withArguments:nil.
+ ^ true "/ eaten
+ ]
+ ]
+ ].
].
].
@@ -6603,39 +6632,39 @@
Also sent to autoselect an interesting context on entry."
Notification
- handle:
- [:ex |
- "/ ex suspendedContext fullPrintAll.
- Transcript showCR:ex description.
- "/ Transcript showCR:ex parameter.
- ex proceed
- ]
- do:
- [
- Error
- handle:
- [:ex |
- |s con|
-
- ex signal isControlInterrupt
- ifTrue:[
- 'DebugView [info]: halt/break ignored - while showing selection in debugger' infoPrintCR.
- ex proceed
- ].
-
- ('DebugView [info]: error at %1 when showing selection in debugger ignored' bindWith:ex suspendedContext) infoPrintCR.
-
- s := '' writeStream.
- s nextPutLine:'**** error in debugger, while extracting source'.
- s nextPutLine:'****'.
- s nextPutAll: '**** '; nextPutLine:(ex description "withCRs").
- s nextPutLine:'****'.
- con := ex suspendedContext.
- s nextPutAll: '**** '; nextPutLine:(con printString).
- con := con sender.
- HaltInterrupt ignoreIn:[
- con fullPrintAllOn:s.
- ].
+ handle:
+ [:ex |
+ "/ ex suspendedContext fullPrintAll.
+ Transcript showCR:ex description.
+ "/ Transcript showCR:ex parameter.
+ ex proceed
+ ]
+ do:
+ [
+ Error
+ handle:
+ [:ex |
+ |s con|
+
+ ex signal isControlInterrupt
+ ifTrue:[
+ 'DebugView [info]: halt/break ignored - while showing selection in debugger' infoPrintCR.
+ ex proceed
+ ].
+
+ ('DebugView [info]: error at %1 when showing selection in debugger ignored' bindWith:ex suspendedContext) infoPrintCR.
+
+ s := '' writeStream.
+ s nextPutLine:'**** error in debugger, while extracting source'.
+ s nextPutLine:'****'.
+ s nextPutAll: '**** '; nextPutLine:(ex description "withCRs").
+ s nextPutLine:'****'.
+ con := ex suspendedContext.
+ s nextPutAll: '**** '; nextPutLine:(con printString).
+ con := con sender.
+ HaltInterrupt ignoreIn:[
+ con fullPrintAllOn:s.
+ ].
"/ [con notNil] whileTrue:[
"/ Error catch:[:ex |
"/ s nextPutAll: '**** '; nextPutLine:(con printString).
@@ -6647,29 +6676,29 @@
"/ con := con sender.
"/ ]
"/ ].
- codeView contents:(s contents).
- ex return.
- ]
- do:
- [
- self doShowSelection:lineNr
- ]
- ]
+ codeView contents:(s contents).
+ ex return.
+ ]
+ do:
+ [
+ self doShowSelection:lineNr
+ ]
+ ]
"Modified: / 04-07-2006 / 14:50:06 / cg"
!
showStackInspectorFor:con
stackInspector isNil ifTrue:[
- receiverInspector origin:(0.0 @ 0.0) corner:0.3 @ 1.0.
- contextInspector origin:(0.3 @ 0.0) corner:(0.6 @ 1.0).
- stackInspector := InspectorView
- origin:(0.6 @ 0.0)
- corner:(1.0 @ 1.0)
- in:contextInspector superView.
- stackInspector realize.
- stackInspector fieldListLabel:'Stack'.
- stackInspector hideReceiver:true
+ receiverInspector origin:(0.0 @ 0.0) corner:0.3 @ 1.0.
+ contextInspector origin:(0.3 @ 0.0) corner:(0.6 @ 1.0).
+ stackInspector := InspectorView
+ origin:(0.6 @ 0.0)
+ corner:(1.0 @ 1.0)
+ in:contextInspector superView.
+ stackInspector realize.
+ stackInspector fieldListLabel:'Stack'.
+ stackInspector hideReceiver:true
].
stackInspector inspect:(con stackFrame asArray).
stackInspector showLast
@@ -7090,6 +7119,12 @@
ignoreEndTime := something.
!
+ignoreUntilShiftKeyPressed:aBoolean
+ ignoreUntilShiftKeyPressed := aBoolean.
+
+ "Created: / 27-01-2012 / 11:35:23 / cg"
+!
+
method
|m|
@@ -7114,9 +7149,9 @@
"/ self assert:(methodArg mclass notNil).
methodArg == #all ifTrue:[
- weakMethodHolder := methodArg
+ weakMethodHolder := methodArg
] ifFalse:[
- weakMethodHolder := WeakArray with:methodArg.
+ weakMethodHolder := WeakArray with:methodArg.
].
lineNumber := lineNumberArg.
@@ -7127,9 +7162,9 @@
decrementIgnoreCount
ignoreCount notNil ifTrue:[
- ignoreCount > 0 ifTrue:[
- ignoreCount := ignoreCount - 1
- ]
+ ignoreCount > 0 ifTrue:[
+ ignoreCount := ignoreCount - 1
+ ]
]
! !
@@ -7139,30 +7174,34 @@
|method|
(method := self method) isNil ifTrue:[
- aStream nextPutAll:'an obsolete IgnoredHalt'.
- ^ self
+ aStream nextPutAll:'an obsolete IgnoredHalt'.
+ ^ self
].
aStream nextPutAll:'Ignore '.
- method printOn:aStream.
-
- ignoreEndTime notNil ifTrue:[
- aStream nextPutAll:'until '.
- ignoreEndTime printOn:aStream.
+ method whoString printOn:aStream.
+
+ ignoreUntilShiftKeyPressed == true ifTrue:[
+ aStream nextPutAll:' until shiftKey pressed'.
] ifFalse:[
- (ignoreCount > 0) ifTrue:[
- aStream nextPutAll:'for '.
- ignoreCount printOn:aStream.
- ] ifFalse:[
- (ignoreCount < 0) ifTrue:[
- aStream nextPutAll:'forEver'.
- ] ifFalse:[
- aStream nextPutAll:' no longer'.
- ].
- ].
- ].
-
- "Modified: / 08-05-2011 / 10:29:11 / cg"
+ ignoreEndTime notNil ifTrue:[
+ aStream nextPutAll:' until '.
+ ignoreEndTime printOn:aStream.
+ ] ifFalse:[
+ (ignoreCount > 0) ifTrue:[
+ aStream nextPutAll:' for '.
+ ignoreCount printOn:aStream.
+ ] ifFalse:[
+ (ignoreCount < 0) ifTrue:[
+ aStream nextPutAll:' forEver'.
+ ] ifFalse:[
+ aStream nextPutAll:' no longer'.
+ ].
+ ].
+ ].
+ ].
+
+ "Modified: / 27-01-2012 / 11:43:10 / cg"
! !
!DebugView::IgnoredHalt methodsFor:'queries'!
@@ -7172,34 +7211,44 @@
nil if not ignored"
ignoreCount notNil ifTrue:[
- ignoreCount > 0 ifTrue:[
- ^ '%1 more calls ignored' bindWith:ignoreCount
- ].
- ^ nil
+ ignoreCount > 0 ifTrue:[
+ ^ '%1 more calls ignored' bindWith:ignoreCount
+ ].
+ ^ nil
].
ignoreEndTime notNil ifTrue:[
- (ignoreEndTime > Timestamp now) ifTrue:[
- ^ 'ignored until %1' bindWith:ignoreEndTime
- ].
- ^ nil
+ (ignoreEndTime > Timestamp now) ifTrue:[
+ ^ 'ignored until %1' bindWith:ignoreEndTime
+ ].
+ ^ nil
+ ].
+ ignoreUntilShiftKeyPressed == true ifTrue:[
+ Display shiftDown ifFalse:[
+ ^ 'ignored until shiftKey is pressed'
+ ].
+ ^ nil
].
^ 'ignored until reenabled'
+
+ "Modified: / 27-01-2012 / 11:35:48 / cg"
!
isActive
"true if this ignore-entry is still active"
self method isNil ifTrue:[self halt. ^ false ]. "/ method no longer valid
+
ignoreEndTime notNil ifTrue:[
- ^ ignoreEndTime > Timestamp now
+ ^ ignoreEndTime > Timestamp now
].
ignoreCount notNil ifTrue:[
- ^ ignoreCount > 0
+ ^ ignoreCount > 0
].
^ false
"Modified: / 23-03-2011 / 15:21:02 / cg"
+ "Modified (format): / 27-01-2012 / 11:25:30 / cg"
!
isForMethod:aMethod line:line
@@ -7214,14 +7263,19 @@
isHaltIgnored
"true if this halt should be ignored"
+ ignoreUntilShiftKeyPressed == true ifTrue:[
+ ^ Display shiftDown not
+ ].
ignoreCount notNil ifTrue:[
- ^ ignoreCount > 0
+ ^ ignoreCount > 0
].
ignoreEndTime notNil ifTrue:[
- ^ ignoreEndTime > Timestamp now
+ ^ ignoreEndTime > Timestamp now
].
^ true
+
+ "Modified: / 27-01-2012 / 11:36:01 / cg"
!
isHaltIgnoredInMethod:aMethod line:line
@@ -7236,7 +7290,7 @@
!DebugView class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.526 2012-01-27 10:13:48 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.527 2012-01-27 10:50:31 cg Exp $'
!
version_SVN