DebugView.st
branchjv
changeset 17134 c4cce8b7a95d
parent 16869 2ecababdd4c0
parent 16961 64ff32c6309b
child 17136 cb908d2ba02e
equal deleted inserted replaced
17133:f9f20407fbf9 17134:c4cce8b7a95d
     1 "{ Encoding: utf8 }"
       
     2 
       
     3 "
     1 "
     4  COPYRIGHT (c) 1989 by Claus Gittinger
     2  COPYRIGHT (c) 1989 by Claus Gittinger
     5 	      All Rights Reserved
     3 	      All Rights Reserved
     6 
     4 
     7  This software is furnished under a license and may be used
     5  This software is furnished under a license and may be used
  2785     aComponent == abortButton ifTrue:[
  2783     aComponent == abortButton ifTrue:[
  2786         s := 'Abort (unwind to eventLoop)'
  2784         s := 'Abort (unwind to eventLoop)'
  2787     ].
  2785     ].
  2788     aComponent == terminateButton ifTrue:[
  2786     aComponent == terminateButton ifTrue:[
  2789         Processor activeProcess isGUIProcess ifTrue:[
  2787         Processor activeProcess isGUIProcess ifTrue:[
  2790             s := 'Terminate the process (closes view and shuts down application)'
  2788             s := 'Terminate the process.\Attention: closes view and shuts down application.'
  2791         ] ifFalse:[
  2789         ] ifFalse:[
  2792             s := 'Terminate the process'
  2790             s := 'Terminate the process.\Attention: do not kill a system thread'
  2793         ]
  2791         ]
  2794     ].
  2792     ].
  2795     aComponent == continueButton ifTrue:[
  2793     aComponent == continueButton ifTrue:[
  2796         continueButton label = (resources string:'Stop') ifTrue:[
  2794         continueButton label = (resources string:'Stop') ifTrue:[
  2797             s := 'Stop'
  2795             s := 'Stop'
  3031     "closing the debugger implies an abort or continue"
  3029     "closing the debugger implies an abort or continue"
  3032 
  3030 
  3033     |m|
  3031     |m|
  3034 
  3032 
  3035     withConfirmation ifTrue:[
  3033     withConfirmation ifTrue:[
  3036 	self checkIfCodeIsReallyModified ifTrue:[
  3034         self checkIfCodeIsReallyModified ifTrue:[
  3037 	    (self confirm:('Code modified - exit anyway ?'))
  3035             (self confirm:('Code was modified.\\Exit anyway ?'))
  3038 	    ifFalse:[
  3036             ifFalse:[
  3039 		^ self
  3037                 ^ self
  3040 	    ]
  3038             ]
  3041 	]
  3039         ]
  3042     ].
  3040     ].
  3043 
  3041 
  3044     self autoUpdateOff.
  3042     self autoUpdateOff.
  3045 
  3043 
  3046     (m := contextView middleButtonMenu) notNil ifTrue:[m hide].
  3044     (m := contextView middleButtonMenu) notNil ifTrue:[m hide].
  3047     inspecting ifFalse:[
  3045     inspecting ifFalse:[
  3048 	"I am running on top of a process, abort or continue it"
  3046         "I am running on top of a process, abort or continue it"
  3049 
  3047 
  3050 	windowGroup notNil ifTrue:[
  3048         windowGroup notNil ifTrue:[
  3051 	    windowGroup setProcess:nil.
  3049             windowGroup setProcess:nil.
  3052 	].
  3050         ].
  3053 	self uncacheMyself.
  3051         self uncacheMyself.
  3054 
  3052 
  3055 	"/
  3053         "/
  3056 	"/ catch invalid return;
  3054         "/ catch invalid return;
  3057 	"/ this happens, when my process has somehow died (quickterminate)
  3055         "/ this happens, when my process has somehow died (quickterminate)
  3058 	"/ and I am a leftOver view, which gets terminated via the launchers
  3056         "/ and I am a leftOver view, which gets terminated via the launchers
  3059 	"/ #destroy-window function.
  3057         "/ #destroy-window function.
  3060 	"/
  3058         "/
  3061 	Context cannotReturnSignal handle:[:ex |
  3059         Context cannotReturnSignal handle:[:ex |
  3062 	    'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
  3060             'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
  3063 	    self uncacheMyself.
  3061             self uncacheMyself.
  3064 	    Debugger newDebugger.
  3062             Debugger newDebugger.
  3065 	    ex return.
  3063             ex return.
  3066 	] do:[
  3064         ] do:[
  3067 	    AbortOperationRequest isHandled ifTrue:[
  3065             AbortOperationRequest isHandled ifTrue:[
  3068 		self doAbort.
  3066                 self doAbort.
  3069 	    ] ifFalse:[
  3067             ] ifFalse:[
  3070 		self doContinue
  3068                 self doContinue
  3071 	    ]
  3069             ]
  3072 	].
  3070         ].
  3073 	"/ We don't reach this point normally
  3071         "/ We don't reach this point normally
  3074 	'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
  3072         'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
  3075     ].
  3073     ].
  3076 
  3074 
  3077     Debugger newDebugger.
  3075     Debugger newDebugger.
  3078     "/ since I am going to be destroyed, remove me from the cache
  3076     "/ since I am going to be destroyed, remove me from the cache
  3079     self uncacheMyself.
  3077     self uncacheMyself.
  3240 !
  3238 !
  3241 
  3239 
  3242 initializeButtons1In:bpanel
  3240 initializeButtons1In:bpanel
  3243     "creates the top button row, consisting of 'continue', 'abort', 'terminate'..."
  3241     "creates the top button row, consisting of 'continue', 'abort', 'terminate'..."
  3244 
  3242 
  3245     |separator|
  3243     |separator buttonWidth|
  3246 
  3244 
       
  3245     buttonWidth := 170.
       
  3246     
  3247     bpanel horizontalLayout:#left.
  3247     bpanel horizontalLayout:#left.
  3248     bpanel verticalLayout:#centerMax.
  3248     bpanel verticalLayout:#centerMax.
  3249     bpanel verticalSpace:ViewSpacing // 2.
  3249     bpanel verticalSpace:ViewSpacing // 2.
  3250 
  3250 
  3251     self initializeContinueButtonIn:bpanel.
  3251     self initializeContinueButtonIn:bpanel.
  3252     continueButton width:150.
  3252     continueButton width:buttonWidth.
  3253 
  3253 
  3254     "/ separator := View extent:(10 @ 5) in:bpanel.
  3254     "/ separator := View extent:(10 @ 5) in:bpanel.
  3255     "/ separator borderWidth:0; level:0.
  3255     "/ separator borderWidth:0; level:0.
  3256     self initializeAbortButtonIn:bpanel.
  3256     self initializeAbortButtonIn:bpanel.
  3257     abortButton width:150.
  3257     abortButton width:buttonWidth.
  3258 
  3258 
  3259     separator := View extent:(100 @ 5) in:bpanel.
  3259     separator := View extent:(100 @ 5) in:bpanel.
  3260     separator borderWidth:0; level:0.
  3260     separator borderWidth:0; level:0.
  3261 
  3261 
  3262     self initializeTerminateButtonIn:bpanel.
  3262     self initializeTerminateButtonIn:bpanel.
  3267     self initializeGotoDialogOpenerButtonIn:bpanel.
  3267     self initializeGotoDialogOpenerButtonIn:bpanel.
  3268     self initializeGotoApplicationActionMethodButtonIn:bpanel.
  3268     self initializeGotoApplicationActionMethodButtonIn:bpanel.
  3269     self initializeDefineButtonIn:bpanel.
  3269     self initializeDefineButtonIn:bpanel.
  3270 
  3270 
  3271     (UserPreferences current allowSendMailFromDebugger and:[SendMailTool notNil]) ifTrue:[
  3271     (UserPreferences current allowSendMailFromDebugger and:[SendMailTool notNil]) ifTrue:[
  3272 	separator := View extent:(10 @ 5) in:bpanel.
  3272         separator := View extent:(10 @ 5) in:bpanel.
  3273 	separator borderWidth:0; level:0.
  3273         separator borderWidth:0; level:0.
  3274 	self initializeReportButtonIn:bpanel.
  3274         self initializeReportButtonIn:bpanel.
  3275     ].
  3275     ].
  3276     "Modified: / 17.11.2001 / 21:02:59 / cg"
  3276     "Modified: / 17.11.2001 / 21:02:59 / cg"
  3277 !
  3277 !
  3278 
  3278 
  3279 initializeButtons2In:bpanel
  3279 initializeButtons2In:bpanel
  3280     "creates the second button row, consisting of 'next', 'step', 'return'..."
  3280     "creates the second button row, consisting of 'next', 'step', 'return'..."
  3281 
  3281 
  3282     |separator|
  3282     |separator buttonWidth|
       
  3283 
       
  3284     buttonWidth := 130.
  3283 
  3285 
  3284     bpanel horizontalLayout:#left.
  3286     bpanel horizontalLayout:#left.
  3285     bpanel verticalLayout:#centerMax.
  3287     bpanel verticalLayout:#centerMax.
  3286     bpanel verticalSpace:ViewSpacing // 2.
  3288     bpanel verticalSpace:ViewSpacing // 2.
  3287 
  3289 
  3288     self initializeNextButtonIn:bpanel.
  3290     self initializeNextButtonIn:bpanel.
  3289     nextButton width:100.
  3291     nextButton width:buttonWidth.
  3290 
  3292 
  3291     self initializeStepButtonIn:bpanel.
  3293     self initializeStepButtonIn:bpanel.
  3292     stepButton width:100.
  3294     stepButton width:buttonWidth.
  3293 
  3295 
  3294 "/ cg:
  3296 "/ cg:
  3295 "/ I disabled the stepIn / stepOut buttons - for now.
  3297 "/ I disabled the stepIn / stepOut buttons - for now.
  3296 "/ they do not work reliable with inlined blocks yet.
  3298 "/ they do not work reliable with inlined blocks yet.
  3297 "/
  3299 "/
  3323 "/                        label:img
  3325 "/                        label:img
  3324 "/                        action:[stepButton turnOff. self doNextOut]
  3326 "/                        action:[stepButton turnOff. self doNextOut]
  3325 "/                        in:bpanel.
  3327 "/                        in:bpanel.
  3326 
  3328 
  3327     self initializeSendButtonIn:bpanel.
  3329     self initializeSendButtonIn:bpanel.
  3328     sendButton width:100.
  3330     sendButton width:buttonWidth.
  3329 
  3331 
  3330     separator := View extent:(30 @ 5) in:bpanel.
  3332     separator := View extent:(30 @ 5) in:bpanel.
  3331     separator borderWidth:0; level:0.
  3333     separator borderWidth:0; level:0.
  3332 
  3334 
  3333     self initializeReturnButtonIn:bpanel.
  3335     self initializeReturnButtonIn:bpanel.
  3334     returnButton width:100.
  3336     returnButton width:buttonWidth.
  3335     self initializeRestartButtonIn:bpanel.
  3337     self initializeRestartButtonIn:bpanel.
  3336     restartButton width:100.
  3338     restartButton width:buttonWidth.
  3337     self initializeResendButtonIn:bpanel.
  3339     self initializeResendButtonIn:bpanel.
  3338     resendButton width:100.
  3340     resendButton width:buttonWidth.
  3339 
  3341 
  3340     "Modified: / 18-06-2010 / 08:32:05 / cg"
  3342     "Modified: / 18-06-2010 / 08:32:05 / cg"
  3341 !
  3343 !
  3342 
  3344 
  3343 initializeButtonsIn:bpanel
  3345 initializeButtonsIn:bpanel
  4875     "abort - send Object>>abortSignal, which is usually caught
  4877     "abort - send Object>>abortSignal, which is usually caught
  4876      at save places (for example: in the event loop) and returns back
  4878      at save places (for example: in the event loop) and returns back
  4877      from whatever the process is doing, but does not terminate it."
  4879      from whatever the process is doing, but does not terminate it."
  4878 
  4880 
  4879     self checkIfCodeIsReallyModified ifTrue:[
  4881     self checkIfCodeIsReallyModified ifTrue:[
  4880 	(self confirm:('Code modified - abort anyway ?'))
  4882         (self confirm:('Code was modified.\\Abort anyway ?'))
  4881 	ifFalse:[
  4883         ifFalse:[
  4882 	    ^ self
  4884             ^ self
  4883 	]
  4885         ]
  4884     ].
  4886     ].
  4885 
  4887     ^ self doAbortWithoutConfirmation
  4886     inspecting ifTrue:[
       
  4887 	inspectedProcess isDead ifTrue:[
       
  4888 	    self showTerminated.
       
  4889 	    ^ self
       
  4890 	].
       
  4891 	(AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
       
  4892 	    self showError:'** the process does not handle the abort signal **'
       
  4893 	] ifTrue:[
       
  4894 	    self interruptProcessWith:[AbortOperationRequest raise].
       
  4895 	].
       
  4896 	^ self
       
  4897     ].
       
  4898 
       
  4899     steppedContext := wrapperContext := nil.
       
  4900     haveControl := false.
       
  4901     exitAction := #abort.
       
  4902 
       
  4903     "exit private event-loop"
       
  4904     catchBlock notNil ifTrue:[
       
  4905 	abortButton turnOff.
       
  4906 	catchBlock value.
       
  4907 
       
  4908 	"/ not reached
       
  4909 	'DebugView [warning]: abort failed' errorPrintCR.
       
  4910     ].
       
  4911 
       
  4912     ^ self.
       
  4913 
       
  4914     "Modified: / 17.11.2001 / 22:53:22 / cg"
       
  4915 !
  4888 !
  4916 
  4889 
  4917 doAbortAll
  4890 doAbortAll
  4918     "abortAll - send Object>>abortAllSignal, which is usually caught
  4891     "abortAll - send Object>>abortAllSignal, which is usually caught
  4919      at save places (for example: in the event loop) and returns back
  4892      at save places (for example: in the event loop) and returns back
  4948 	abortButton turnOff.
  4921 	abortButton turnOff.
  4949 	catchBlock value.
  4922 	catchBlock value.
  4950 
  4923 
  4951 	"/ not reached
  4924 	"/ not reached
  4952 	'DebugView [warning]: abort failed' errorPrintCR.
  4925 	'DebugView [warning]: abort failed' errorPrintCR.
       
  4926     ].
       
  4927 
       
  4928     ^ self.
       
  4929 
       
  4930     "Modified: / 17.11.2001 / 22:53:22 / cg"
       
  4931 !
       
  4932 
       
  4933 doAbortWithoutConfirmation
       
  4934     "abort - send Object>>abortSignal, which is usually caught
       
  4935      at save places (for example: in the event loop) and returns back
       
  4936      from whatever the process is doing, but does not terminate it."
       
  4937 
       
  4938     inspecting ifTrue:[
       
  4939         inspectedProcess isDead ifTrue:[
       
  4940             self showTerminated.
       
  4941             ^ self
       
  4942         ].
       
  4943         (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
       
  4944             self showError:'** the process does not handle the abort signal **'
       
  4945         ] ifTrue:[
       
  4946             self interruptProcessWith:[AbortOperationRequest raise].
       
  4947         ].
       
  4948         ^ self
       
  4949     ].
       
  4950 
       
  4951     steppedContext := wrapperContext := nil.
       
  4952     haveControl := false.
       
  4953     exitAction := #abort.
       
  4954 
       
  4955     "exit private event-loop"
       
  4956     catchBlock notNil ifTrue:[
       
  4957         abortButton turnOff.
       
  4958         catchBlock value.
       
  4959 
       
  4960         "/ not reached
       
  4961         'DebugView [warning]: abort failed' errorPrintCR.
  4953     ].
  4962     ].
  4954 
  4963 
  4955     ^ self.
  4964     ^ self.
  4956 
  4965 
  4957     "Modified: / 17.11.2001 / 22:53:22 / cg"
  4966     "Modified: / 17.11.2001 / 22:53:22 / cg"
  5278     "single send; reenter with next message send"
  5287     "single send; reenter with next message send"
  5279 
  5288 
  5280     inspecting ifTrue:[^ self].
  5289     inspecting ifTrue:[^ self].
  5281 
  5290 
  5282     self checkIfCodeIsReallyModified ifTrue:[
  5291     self checkIfCodeIsReallyModified ifTrue:[
  5283 	(self confirm:('Code modified - step anyway ?'))
  5292         (self confirm:('Code was modified.\\Step anyway ?'))
  5284 	ifFalse:[
  5293         ifFalse:[
  5285 	    ^ self
  5294             ^ self
  5286 	]
  5295         ]
  5287     ].
  5296     ].
  5288 
  5297 
  5289     canContinue ifTrue:[
  5298     canContinue ifTrue:[
  5290 	steppedContext := wrapperContext := nil.
  5299         steppedContext := wrapperContext := nil.
  5291 	haveControl := false.
  5300         haveControl := false.
  5292 	exitAction := #step.
  5301         exitAction := #step.
  5293 
  5302 
  5294 	"exit private event-loop"
  5303         "exit private event-loop"
  5295 	catchBlock value.
  5304         catchBlock value.
  5296 
  5305 
  5297 	"/ not reached
  5306         "/ not reached
  5298 	'DebugView [warning]: send failed' errorPrintCR.
  5307         'DebugView [warning]: send failed' errorPrintCR.
  5299 	sendButton turnOff.
  5308         sendButton turnOff.
  5300     ]
  5309     ]
  5301 
  5310 
  5302     "Created: / 6.3.1997 / 21:09:36 / cg"
  5311     "Created: / 6.3.1997 / 21:09:36 / cg"
  5303     "Modified: / 29.7.1998 / 21:49:29 / cg"
  5312     "Modified: / 29.7.1998 / 21:49:29 / cg"
  5304 !
  5313 !
  5508     |con method|
  5517     |con method|
  5509 
  5518 
  5510     inspecting ifTrue:[^ self].
  5519     inspecting ifTrue:[^ self].
  5511 
  5520 
  5512     self checkIfCodeIsReallyModified ifTrue:[
  5521     self checkIfCodeIsReallyModified ifTrue:[
  5513 	(self confirm:('Code modified - step anyway ?'))
  5522         (self confirm:('Code was modified\\Step anyway ?'))
  5514 	ifFalse:[
  5523         ifFalse:[
  5515 	    ^ self
  5524             ^ self
  5516 	]
  5525         ]
  5517     ].
  5526     ].
  5518 
  5527 
  5519     canContinue ifTrue:[
  5528     canContinue ifTrue:[
  5520 	selectedContext notNil ifTrue:[
  5529         selectedContext notNil ifTrue:[
  5521 	    con := actualContext. "/ selectedContext.
  5530             con := actualContext. "/ selectedContext.
  5522 	    steppedContextLineno := actualContext lineNumber.
  5531             steppedContextLineno := actualContext lineNumber.
  5523 	] ifFalse:[
  5532         ] ifFalse:[
  5524 	    con := contextArray at:2.
  5533             con := contextArray at:2.
  5525 	    steppedContextLineno := con lineNumber.
  5534             steppedContextLineno := con lineNumber.
  5526 	].
  5535         ].
  5527 
  5536 
  5528 	skipLineNr := lineNrOrNilOrMinus1.
  5537         skipLineNr := lineNrOrNilOrMinus1.
  5529 
  5538 
  5530 	lineNrOrNilOrMinus1 == -1 ifTrue:[
  5539         lineNrOrNilOrMinus1 == -1 ifTrue:[
  5531 	    steppedContextLineno := skipLineNr := nil.
  5540             steppedContextLineno := skipLineNr := nil.
  5532 	].
  5541         ].
  5533 
  5542 
  5534 	(stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
  5543         (stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
  5535 	    steppedContext := contextArray at:1.
  5544             steppedContext := contextArray at:1.
  5536 	    stepHow := #nextIn.
  5545             stepHow := #nextIn.
  5537 	] ifFalse:[
  5546         ] ifFalse:[
  5538 	    stepHow == #nextOut ifTrue:[
  5547             stepHow == #nextOut ifTrue:[
  5539 		steppedContext := con home.
  5548                 steppedContext := con home.
  5540 	    ] ifFalse:[
  5549             ] ifFalse:[
  5541 		steppedContext := con.
  5550                 steppedContext := con.
  5542 	    ].
  5551             ].
  5543 	].
  5552         ].
  5544 
  5553 
  5545 	wrapperContext := nil.
  5554         wrapperContext := nil.
  5546 
  5555 
  5547 "/ ' step con:' print. (ObjectMemory addressOf:steppedContext) printHex. ' ' print. steppedContext printCR.
  5556 "/ ' step con:' print. (ObjectMemory addressOf:steppedContext) printHex. ' ' print. steppedContext printCR.
  5548 
  5557 
  5549 	"
  5558         "
  5550 	 if we step in a wrapped method,
  5559          if we step in a wrapped method,
  5551 	 prepare to skip the prolog ...
  5560          prepare to skip the prolog ...
  5552 	"
  5561         "
  5553 
  5562 
  5554 	inWrap := false.
  5563         inWrap := false.
  5555 	method := con method.
  5564         method := con method.
  5556 	(method notNil
  5565         (method notNil
  5557 	and:[method isWrapped
  5566         and:[method isWrapped
  5558 	and:[method originalMethod ~~ method]]) ifTrue:[
  5567         and:[method originalMethod ~~ method]]) ifTrue:[
  5559 	    inWrap := true
  5568             inWrap := true
  5560 	].
  5569         ].
  5561 
  5570 
  5562 	lineNrOrNilOrMinus1 == #return ifTrue:[
  5571         lineNrOrNilOrMinus1 == #return ifTrue:[
  5563 	    Processor activeProcess forceInterruptOnReturnOf:con.
  5572             Processor activeProcess forceInterruptOnReturnOf:con.
  5564 	].
  5573         ].
  5565 
  5574 
  5566 	con := nil.
  5575         con := nil.
  5567 	bigStep := true.
  5576         bigStep := true.
  5568 	haveControl := false.
  5577         haveControl := false.
  5569 	exitAction := #step.
  5578         exitAction := #step.
  5570 
  5579 
  5571 	"exit private event-loop"
  5580         "exit private event-loop"
  5572 	catchBlock value.
  5581         catchBlock value.
  5573 
  5582 
  5574 	"/ not reached
  5583         "/ not reached
  5575 	'DebugView [warning]: step failed' errorPrintCR.
  5584         'DebugView [warning]: step failed' errorPrintCR.
  5576 	stepButton turnOff. nextButton turnOff. sendButton turnOff.
  5585         stepButton turnOff. nextButton turnOff. sendButton turnOff.
  5577     ]
  5586     ]
  5578 
  5587 
  5579     "Modified: / 29.7.1998 / 21:50:16 / cg"
  5588     "Modified: / 29.7.1998 / 21:50:16 / cg"
  5580 !
  5589 !
  5581 
  5590 
  6686 !
  6695 !
  6687 
  6696 
  6688 findNodeIn:tree forInterval:interval
  6697 findNodeIn:tree forInterval:interval
  6689     <resource: #obsolete>
  6698     <resource: #obsolete>
  6690 
  6699 
  6691     |node|
  6700     self obsoleteMethodWarning.
  6692 
  6701     ^ DoWhatIMeanSupport findNodeIn:tree forInterval:interval
  6693 self obsoleteMethodWarning.
  6702 "/    |node|
  6694     node := nil.
  6703 "/
  6695     tree nodesDo:[:each |
  6704 "/    node := nil.
  6696 	(each intersectsInterval:interval) ifTrue:[
  6705 "/    tree nodesDo:[:each |
  6697 	    (node isNil or:[node == each parent]) ifTrue:[
  6706 "/        (each intersectsInterval:interval) ifTrue:[
  6698 		node := each
  6707 "/            (node isNil or:[node == each parent]) ifTrue:[
  6699 	    ] ifFalse:[
  6708 "/                node := each
  6700 		(node parent notNil
  6709 "/            ] ifFalse:[
  6701 		    and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
  6710 "/                (node parent notNil
  6702 	    ]
  6711 "/                    and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
  6703 	]
  6712 "/            ]
  6704     ].
  6713 "/        ]
  6705     ^ node
  6714 "/    ].
       
  6715 "/    ^ node
  6706 !
  6716 !
  6707 
  6717 
  6708 goodSkipUntilSelector
  6718 goodSkipUntilSelector
  6709     |current|
  6719     |current|
  6710 
  6720 
  8259 "/                    ex proceed
  8269 "/                    ex proceed
  8260 "/                ].
  8270 "/                ].
  8261 "/                self showError:ex description.
  8271 "/                self showError:ex description.
  8262 "/                ex proceed.
  8272 "/                ex proceed.
  8263 "/            ] do:[
  8273 "/            ] do:[
       
  8274                 device isNil ifTrue:[^ self].
       
  8275                 
  8264                 device
  8276                 device
  8265                     dispatchModalWhile:[
  8277                     dispatchModalWhile:[
  8266                         Processor activeProcess state:#debug.
  8278                         Processor activeProcess state:#debug.
  8267                         haveControl].
  8279                         haveControl].
  8268 "/            ]
  8280 "/            ]
  8767 confirm:aString
  8779 confirm:aString
  8768     "open a modal yes-no dialog.
  8780     "open a modal yes-no dialog.
  8769      Redefined here, to answer true, if exclusice Debugger, which cannot handle popup boxes"
  8781      Redefined here, to answer true, if exclusice Debugger, which cannot handle popup boxes"
  8770 
  8782 
  8771     (exclusive or:[windowGroup isNil]) ifTrue:[
  8783     (exclusive or:[windowGroup isNil]) ifTrue:[
  8772 	^ true
  8784         ^ true
  8773     ].
  8785     ].
  8774     ^ super confirm:aString.
  8786     ^ super confirm:(resources stringWithCRs:aString).
  8775 !
  8787 !
  8776 
  8788 
  8777 doShowSelection:lineNr
  8789 doShowSelection:lineNr
  8778     "user clicked on a header line - show selected code in textView.
  8790     "user clicked on a header line - show selected code in textView.
  8779      Also sent to autoselect an interesting context on entry."
  8791      Also sent to autoselect an interesting context on entry."
  9295                     codeView methodHolder value: method.
  9307                     codeView methodHolder value: method.
  9296                     codeView classHolder value: ((method respondsTo: #mclass) ifTrue:[method mclass] ifFalse:[rec class])
  9308                     codeView classHolder value: ((method respondsTo: #mclass) ifTrue:[method mclass] ifFalse:[rec class])
  9297                 ] ifFalse:[
  9309                 ] ifFalse:[
  9298                     UserPreferences current syntaxColoring ifTrue:[
  9310                     UserPreferences current syntaxColoring ifTrue:[
  9299                         implementorClass isNil ifTrue:[
  9311                         implementorClass isNil ifTrue:[
       
  9312                             |guessedHome|
  9300                             (con isBlockContext
  9313                             (con isBlockContext
  9301                             and:[con home isNil
  9314                             and:[con home isNil
  9302                             and:[con guessedHome notNil]])
  9315                             and:[(guessedHome := con guessedHome) notNil]])
  9303                             ifTrue:[
  9316                             ifTrue:[
  9304                                 implementorClass := con guessedHome mclass
  9317                                 implementorClass := guessedHome mclass
  9305                             ]
  9318                             ]
  9306                         ].
  9319                         ].
  9307                         implementorClass notNil ifTrue:[
  9320                         implementorClass notNil ifTrue:[
  9308                             (highlighter := implementorClass syntaxHighlighterClass) notNil ifTrue:[
  9321                             (highlighter := implementorClass syntaxHighlighterClass) notNil ifTrue:[
  9309                                 code size < 100000 ifTrue:[
  9322                                 code size < 100000 ifTrue:[
  9373                     codeView commentStrings:rec class programmingLanguage commentStrings.
  9386                     codeView commentStrings:rec class programmingLanguage commentStrings.
  9374                 ].
  9387                 ].
  9375             ].
  9388             ].
  9376 
  9389 
  9377             codeView
  9390             codeView
       
  9391                 simulatedSelf:rec;
  9378                 doItAction:
  9392                 doItAction:
  9379                     [:theCode |
  9393                     [:theCode |
  9380                          evaluatorClass
  9394                          evaluatorClass
  9381                              evaluate:theCode
  9395                              evaluate:theCode
  9382                              in:actualContext "/ (selectedContext ? actualContext)
  9396                              in:actualContext "/ (selectedContext ? actualContext)
  9479 
  9493 
  9480 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'printing'!
  9494 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'printing'!
  9481 
  9495 
  9482 printConditionOn:aStream
  9496 printConditionOn:aStream
  9483     ignoredSendingClassAndSelectors notEmptyOrNil ifTrue:[
  9497     ignoredSendingClassAndSelectors notEmptyOrNil ifTrue:[
  9484         aStream nextPutAll:(' if called from %1 » %2'
  9498         aStream nextPutAll:(' if called from %1 » %2'
  9485                                 bindWith:ignoredSendingClassAndSelectors first first
  9499                                 bindWith:ignoredSendingClassAndSelectors first first
  9486                                 with:ignoredSendingClassAndSelectors first second).
  9500                                 with:ignoredSendingClassAndSelectors first second).
  9487         ^ self.
  9501         ^ self.
  9488     ].
  9502     ].
  9489     ignoredProcesses notEmptyOrNil ifTrue:[
  9503     ignoredProcesses notEmptyOrNil ifTrue:[