Hi,

Please excuse the possible 'out of left field' (as we say) aspect of this 
question but I recently heard about Omniscient Debugging (ODB):
http://www.lambdacs.com/debugger/debugger.html

There is an article in the latest Dr Dobbs (6/05) by the above fellow (Bil 
Lewis - former Sun scientist and author of the GNU Emacs Lisp manual)- 
he's got a java implementation of ODB.  Basically every change to every 
obj/var is tracked, so you can work back through the whole run in one try, 
w/o the 'set breakpoint/rerun' sort of iterativeness that goes on, 
normally.  His story is that the JVM is esp. suited to doing this, making 
the ODB quite easy, so I asked him about how to go about this for 
perl/p6/parrot:

"I took a peek at Parrot... It didn't say the "right" things about how
a VM should work, which worries me.

In any case, all you have to do is to have your code make the appropriate
calls into my recording functions everytime the appropriate event occurs.
I do this in Java with byte code insertion. Looks like this will be much
harder in the Parrot VM, but still possible.

It could be easier to do in the compiler, if you're good with compilers."

[ I asked what were the 'right things' ]

"The JVM, CLR, and ELisp are all stack machines and they work *really*
well. And being a stack machine makes a lot of stuff *really* easy to do.
As opposed to previous experience with VMs done as flat register machines.
Which have proven harder to work with.

Parrot tosses that out and fails to give a convincing argument why.
They talk about Perl being interpreted as important. It isn't. You
shouldn't even know what it's doing at that level."

I don't mean to quote him out of context or to start a stack vs register 
debate, I was just hoping to get some idea from him what is needed to get 
ODB to work, but didn't know if there was any hope for it in p6.  The 
lambdaCS site has the java jar/source and a nice enough demo of his 
implementation, there are a couple of commercial apps:
http://www.omnicore.com/registercodeguide.jsp
http://www.visicomp.com/

both of which seem to be java only.  It would seem to be a very useful 
addition to the world of perl debugging, if it could be shoehorned in w/o 
a horrible amount of work. However, I'm not the person to do the 
shoehorning.

Thanks.


Andy Bach, Sys. Mangler
Internet: [EMAIL PROTECTED] 
VOICE: (608) 261-5738  FAX 264-5932

"Outside of a dog, a book is man's best friend. Inside of a dog, its too 
dark to read."
Groucho Marx

Reply via email to