[squeak-dev] The Trunk: Tools-mt.1031.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Mar 15 10:22:05 UTC 2021


Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.1031.mcz

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

Name: Tools-mt.1031
Author: mt
Time: 15 March 2021, 11:22:01.998586 am
UUID: a69323cb-b4ee-8e4f-963d-780b2d40e73d
Ancestors: Tools-mt.1030

Complements Kernel-mt.1381

Fixes for debugger invocation during code simulation. See  http://forum.world.st/Please-try-out-Fixes-for-debugger-invocation-during-code-simulation-td5127684.html

=============== Diff against Tools-mt.1030 ===============

Item was changed:
  ----- Method: Debugger class>>openOn:context:label:contents:fullView: (in category 'opening') -----
+ openOn: process context: context label: titleOrNil contents: contentsStringOrNil fullView: bool
- openOn: process context: context label: title contents: contentsStringOrNil fullView: bool
  	"Kind of private. Open a notifier or a full debugger in response to an error, halt, or notify. Opens a project-specific debugger. Decorates that invocation with (1) recursive-error detection and (2) error logging, which are both independent from the active GUI framework, that is, MVC or Morphic.
  	
  	Note that clients should debug processes through Process >> #debug instead of calling this method directly."
  
+ 	| ap title |
+ 	title := titleOrNil ifNil: ['Debugger' translated].
- 	| ap |
  	ap := Processor activeProcess.
  	
  	"If the active process re-enters this method again, something went wrong with invoking the debugger."
  	ap hasRecursiveError ifTrue: [
  		ap clearErrorRecursionFlag.
  		^ ToolSet handleRecursiveError: title].
  	
  	"Explicitely handle logging exceptions. No need to bother the recursion mechanism here."
  	[Preferences logDebuggerStackToFile
  		ifTrue: [Smalltalk logSqueakError: title inContext: context]
  	] on: Error do: [:ex |
  		Preferences disable: #logDebuggerStackToFile.
  		ToolSet debugException: ex].
  
  	"If project-specific debuggers mess up, we have to flag that recursion here. Se above."
  	[ap setErrorRecursionFlag.
  
  		self informExistingDebugger: context label: title.
  
  		^ Project current debuggerClass
  			openOn: process context: context label: title contents: contentsStringOrNil fullView: bool
  
  	] ensure: [ap clearErrorRecursionFlag].!

Item was changed:
  ----- Method: ProcessBrowser class>>debugProcess: (in category 'process control') -----
  debugProcess: aProcess
+ 	(aProcess isActiveProcess ifTrue: [Processor] ifFalse: [aProcess])
+ 		debugWithTitle: 'Interrupted from the Process Browser' translated
+ 		full: true.!
- 	aProcess debugWithTitle: 'Interrupted from the Process Browser'.
- !

Item was changed:
  ----- Method: StandardToolSet class>>debugProcess:context:label:contents:fullView: (in category 'debugging') -----
  debugProcess: aProcess context: aContext label: aString contents: contents fullView: aBool
  
+ 	(aProcess isTerminated and: [aString isNil or: [aString beginsWith: 'Debug it']]) ifTrue: [
+ 		^ Project uiManager inform: 'Nothing to debug. Process has terminated.\Expression optimized.' withCRs translated].
- 	(aProcess isTerminated and: [aString beginsWith: 'Debug it']) ifTrue: [
- 		^ Project uiManager inform: 'Nothing to debug. Process has terminated.\Expression optimized.' withCRs].
  
  	^ Debugger
  		openOn: aProcess
  		context: aContext
  		label: aString
  		contents: contents
  		fullView: aBool!

Item was changed:
  ----- Method: StandardToolSet class>>handleError: (in category 'debugging - handlers') -----
  handleError: anError
+ 	"Double dispatch. Let the processor take care of that error, which usually calls back here to #debugProcess:..."
- 	"Double dispatch. Let the active process take care of that error, which usually calls back here to #debugProcess:..."
  
+ 	^ Processor
+ 		debugContext: anError signalerContext
+ 		title: anError description
+ 		full: false
+ 		contents: nil!
- 	^ Processor activeProcess
- 		debug: anError signalerContext
- 		title: anError description!

Item was changed:
  ----- Method: StandardToolSet class>>handleWarning: (in category 'debugging - handlers') -----
  handleWarning: aWarning
+ 	"Double dispatch. Let the processor take care of that warning, which usually calls back here to #debugProcess:..."
- 	"Double dispatch. Let the active process take care of that warning, which usually calls back here to #debugProcess:..."
  
  	| message |
  	message := '{1}\\{2}' withCRs asText format: {
  		"First, show the actual text of this warning."
  		aWarning messageText.
  		"Second, append some helpful information that apply to all kinds of warnings."
  		('{1} {2}' asText format: {
  			'Select "Proceed" to continue or close this window to cancel the operation.' translated.
  			'If you do not want to be interrupted anymore, you can {1} this kind of warning. You can also {2}, which resets such warnings on the next image startup.' translated asText format: {
  				"Provide clickable text links so that the user can directly suppress warnings."
  				'always suppress' asText
  					addAttribute: (PluggableTextAttribute evalBlock: [
  						aWarning class suppressWarnings.
  						self inform: ('All ''{1}'' warnings will be suppressed.' translated format: {aWarning class name})]).
  				'suppress temporarily' asText
  					addAttribute: (PluggableTextAttribute evalBlock: [
  						aWarning class suppressAndResetOnStartUp.
  						self inform: ('All ''{1}'' warnings will be suppressed\and reset on the next image startup.' withCRs translated format: {aWarning class name})])}.
  			}) addAttribute: (
  				"Show this helpful information in a smaller font."
  				TextFontReference toFont: Preferences standardButtonFont)}.
  	
+ 	^ Processor
+ 		debugContext: aWarning signalerContext
- 	^ Processor activeProcess
- 		debug: aWarning signalerContext
  		title: 'Warning' translated
  		full: false
  		contents: message!



More information about the Squeak-dev mailing list