[squeak-dev] Process-specific state difficult to debug...

Levente Uzonyi leves at elte.hu
Thu Jan 29 18:29:06 UTC 2015


That would help, but it seems like the effectiveProcess variable is not 
set correctly. At least I don't see it being set while debugging the 
following:

| ep |
ep := Processor activeProcess instVarNamed: #effectiveProcess.
self haltIf: ep isNil

Levente

On Thu, 29 Jan 2015, Eliot Miranda wrote:

> Hi Marcel,
>     can you give a specific example?  Andreas and I came up with a solution for accessing Processor activeProcess correctly in the debugger.  It works like this:
> 
> ProcessorScheduler>>activeProcess
>     ^activeProcess effectiveProcess
> 
> Process>>effectiveProcess
> "effectiveProcess is a mechanism to allow process-faithful debugging.  The debugger executes code
> on behalf of processes, so unless some effort is made the identity of Processor activeProcess is not
> correctly maintained when debugging code.  The debugger uses evaluate:onBehalfOf: to assign the
> debugged process as the effectiveProcess of the process executing the code, preserving process
> identity."
> ^effectiveProcess ifNil: [self]
> 
> Process>>evaluate: aBlock onBehalfOf: aProcess
> "Evaluate aBlock setting effectiveProcess to aProcess.  Used
> in the execution simulation machinery to ensure that
> Processor activeProcess evaluates correctly when debugging."
> | oldEffectiveProcess |
> oldEffectiveProcess := effectiveProcess.
> effectiveProcess := aProcess.
> ^aBlock ensure: [effectiveProcess := oldEffectiveProcess]
> 
> and then in activateReturn:value: complete: popTo: popTo:value: return:value: step step: stepToCallee stepToSendOrReturn it is used as in
> 
> Process>>step
> 
> ^Processor activeProcess
> evaluate: [suspendedContext := suspendedContext step]
> onBehalfOf: self
> 
> Perhaps all that is needed is the access of process-specific variables to use effectiveProcess?
> 
> On Thu, Jan 29, 2015 at 12:50 AM, Marcel Taeumel <marcel.taeumel at student.hpi.uni-potsdam.de> wrote:
>       Hi!
>
>       There are process-specific variables. However, #doStep in Debugger does
>       #completeStep: on the process object and Processor >> #activeProcess will be
>       wrong during that execution.
>
>       Is this a general problem of global state or could we fix that somehow?
>
>       Best,
>       Marcel
> 
> 
>
>       --
>       View this message in context: http://forum.world.st/Process-specific-state-difficult-to-debug-tp4802422.html
>       Sent from the Squeak - Dev mailing list archive at Nabble.com.
> 
> 
> 
> 
> --
> best,Eliot
> 
>


More information about the Squeak-dev mailing list