[squeak-dev] The Trunk: Tools-eem.756.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Apr 11 19:06:54 UTC 2017


Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.756.mcz

==================== Summary ====================

Name: Tools-eem.756
Author: eem
Time: 11 April 2017, 12:06:44.157162 pm
UUID: e6634875-90c8-4ebf-9f07-5b3e1aadfc81
Ancestors: Tools-cmm.755

Make the debugger handle gracefully stepping through the termiation of a process.

=============== Diff against Tools-cmm.755 ===============

Item was changed:
  ----- Method: Debugger>>buildControlButtonsWith: (in category 'toolbuilder') -----
  buildControlButtonsWith: builder
  
  	| panelSpec |
  	panelSpec := builder pluggablePanelSpec new.
  	panelSpec children: OrderedCollection new.
  	self customButtonSpecs do:[:spec|
  		| buttonSpec |
  		buttonSpec := builder pluggableActionButtonSpec new.
  		buttonSpec model: self.
  		buttonSpec label: spec first.
  		buttonSpec action: spec second.
  		spec second == #methodHierarchy ifTrue:[
  			buttonSpec color: #inheritanceButtonColor.
  		]. 
+ 		spec size > 2 ifTrue:
+ 			[buttonSpec help: spec third.
+ 			 spec size > 3 ifTrue:
+ 				[buttonSpec enabled: spec fourth]].
- 		spec size > 2 ifTrue:[buttonSpec help: spec third].
  		panelSpec children add: buttonSpec.
  	].
  
  	panelSpec layout: #horizontal. "buttons"
  	^panelSpec!

Item was changed:
  ----- Method: Debugger>>customButtonSpecs (in category 'initialize') -----
  customButtonSpecs
  	"Answer an array of elements of the form wording, selector, help-message, that characterize the custom button row of a debugger."
  
  	| list |
  	list := #(('Proceed'	proceed				'close the debugger and proceed.')
  		('Restart'		restart				'reset this context to its start.')
+ 		('Into'			send				'step Into message sends'	interruptedProcessIsActive)
+ 		('Over'			doStep				'step Over message sends'	interruptedProcessIsActive)
+ 		('Through'		stepIntoBlock		'step into a block'			interruptedProcessIsActive)
- 		('Into'			send				'step Into message sends')
- 		('Over'			doStep				'step Over message sends')
- 		('Through'		stepIntoBlock		'step into a block')
  		('Full Stack'		fullStack			'show full stack')
  		('Where'		where				'select current pc range')
  		('Tally'			tally				'time in milliseconds to execute')).
  	Preferences restartAlsoProceeds ifTrue:
  		[list := list collect: [:each |
  			each second == #restart
  				ifTrue: [each copy at: 3 put: 'proceed from the beginning of this context.'; yourself]
  				ifFalse: [each]]].
  	^ list!

Item was added:
+ ----- Method: Debugger>>interruptedProcessIsActive (in category 'user interface') -----
+ interruptedProcessIsActive
+ 	^interruptedProcess isTerminated not!

Item was changed:
  ----- Method: Debugger>>resetContext:changeContents: (in category 'private') -----
  resetContext: aContext changeContents: aBoolean
  	"Used when a new context becomes top-of-stack, for instance when the
  	method of the selected context is re-compiled, or the simulator steps or
  	returns to a new method. There is room for much optimization here, first
  	to save recomputing the whole stack list (and text), and secondly to avoid
  	recomposing all that text (by editing the paragraph instead of recreating it)."
  
  	| oldContext |
  	oldContext := self selectedContext.
+ 	self newStack: (aContext ifNil: [oldContext]) contextStack.
+ 	self changed: #contextStackList; changed: #interruptedProcessIsActive.
- 	self newStack: aContext contextStack.
- 	self changed: #contextStackList.
  	self contextStackIndex: 1 oldContextWas: oldContext.
  	aBoolean ifTrue: [self contentsChanged].
  !



More information about the Squeak-dev mailing list