A portable virtual machine for program debugging and directing