On Tue, Mar 23, 2010 at 11:32:43AM +1300, Michael van der Gulik wrote:
On Tue, Mar 23, 2010 at 7:14 AM, Ang BeePeng beepeng86@yahoo.com wrote:
I have a InterpreterSimulator start up, in a workspace I type "3+4". From here, I want to step through bytecode per bytecode, when I hit "print". What should I do to achieve this?
Can I debug on the interpreter in the middle of the simulation? Or perhaps I need to put a "self halt" somewhere in the VM source?
I don't really know much about the InterpreterSimulator (and congrats for getting it going! I never got it running...), but...
I would look for a primitive method somewhere which would cause the simulated environment to stop and pop a debugger up in the host. You would then evaluate that in the same method as "3+4".
Try putting a self halt in Interpreter>>primitiveAdd, which should be called when you evaluate "3+4".
The main interpreter loop is Interpreter>>interpret, which fetches bytecodes and evaluates them. You can probably put a break in InterpreterSimulator>>dispatchOn:in: which is called by #interpret and simulates the big case statement that the interpreter loop uses to dispatch bytecodes for execution.
Dave