I'd love to see GUI-driven multiprocess debugging for Muq.
What we actually have at the moment is... primitive. As in stone age. Here are some hints for coping.
debugOn
, then errors instead
throw you into the debugger, from which you can examine
the evaluationa and call stacks. Use debugOff
to disable the debugger again. (You can instead tweak the
@$s.breakEnable flag directly if you prefer.)
skt.t
socket logic and internal
timeslicing logic, which may prevent timely printout. One
way around this is to enable logging by invoking Muq
./muq --logfile=xyzzy.log
and then use log,
instead of the regular comma operator -- this will do an
immediate C write directly to the logfile, bypassing all
the message stream, timeslice and socket interface logic.
You can either examine the logfile later, or else watch
it in realtime using tail -f xyzzy.log
from the
Unix commandline.
./muq --logfile=xyzzy.log --log-bytecodes
after which it will log every bytecode executed to xyzzy.log
. Keep in mind that Muq can
easily execute a million bytecodes per second normally, so this can fill disk fast -- not to
mention slow down the interpreter a lot!
You can switch bytecode logging on and off in softcode by doing (respectively)
t --> .muq.logBytecodes
and
nil --> .muq.logBytecodes
.
Want to write a better debugger? Go for it!
Go to the first, previous, next, last section, table of contents.