FSM step by step

Vance Shipley vances@REDACTED
Mon Aug 16 20:38:06 CEST 2004


On Mon, Aug 16, 2004 at 02:55:38PM -0300, Eduardo Figoli wrote:
}  
}  Is there a way to execute an FSM (OTP module FSM behaviour)
}  step by step without modifying the existing FSM implementation code?

You want the debugger!

http://www.erlang.org/doc/r9c/lib/debugger-2.2/doc/html/debugger_chapter.html#1.3

It's well worth the time to learn.

At a lower level you can use stdlib's sys module.  This is what the 
debugger does.  You can supply debug options (dbg_opt()) in the gen_fsm
start function:

  gen_fsm:start_link(Module, Args, [{debug, Dbgs}])

One of these options can be {install, {Func, FuncState}}}.  This debug
function will be called for every system event.  You would have this
function wait for a "step" message before continuing.  You can install
a debug function in a running process with sys:remove/2.

I have found the debug options to be a handy way of debugging in the
field applications.  I install a handler which formats just the
information I'm interested in and presents it in an application specific
way.  It's easy to turn it on and off and the distibuted code is
unchanged.

	-Vance






More information about the erlang-questions mailing list