classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Debugging acronyms


From: Chris Gray
Subject: Re: Debugging acronyms
Date: Sat, 13 Mar 2004 18:27:23 +0100

On Thursday 11 March 2004 13:58, Sascha Brawer wrote:
> Hi all,
>
> I was thinking a bit about how we could support debugging in a way that
> would be common to several free VMs. For an introduction to the "Java
> Platform Debugger Architecture" (JPDA), please refer to [1].
>
> In particular, I am wondering whether it might be possible to implement a
> parser for the "Java Debug Wire Protocol" [JDWP, 2] -- in Java. The
> implementation would use the services of a delegate. Each VM could choose
> to implement the debugging delegate according to their own need.

This seems a very natural implementation. Go for it.

> GNU Classpath would provide a JNI-based reference implementation of this
> debugging delegate, using the Java VM Tool Interface [JVMTI, 3]. (For
> those in love with acronyms, JVMTI is sort of a unification of JVMDI and
> JVMPI, which both have been deprecated in JDK1.5). Currently, no free VM
> implements JVMTI, so that would mean some work for the VM people.
> However, I guess the VMs will eventually want to support JVMTI anyway
> (there exist free tools that use its predecessors JVMPI and JVMDI).

Yes, supporting JVMTI would be effort well spent.

> "Exotic" (non-C) VMs like Jaos or JNode, maybe also IKVM.NET, would have
> to provide their own implementations of the debugging delegate. Still,
> the JDWP parser would be the same.

If you ask me C is a lot more exotic than (say) Oberon.  But I digress. :)

> To make it more fun, I wonder whether the interface to the debugging
> delegate could be based on JDI [4]. JDI is a client-side Java API for the
> JDWP protocol. Basically, the JDWP front-end would then post JDI requests
> to a weird JDI VirtualMachine. (Weird because it was representing the
> local VM, not a remote one).

It's not totally crazy. However it is quite a "big" interface, which could be 
a problem for memory-constrained embedded environments - which would be a 
pity, because in these environments a Java-level debugger would be really 
neat. (On a desktop you can often use brute-forces approaches such as 
generating huge logfiles and filtering them.  Than doesn't work too well over 
a 9600 bps serial port.)

> Mark said he doesn't see a problem with JDI being in the com.sun.jdi
> namespace. I think it might be nice to support JDI, even if it just was
> for the client side -- although this is certainly not the most pressing
> need we have in free Java...
>
> I have no idea what this would mean for gcj and JC. One could imagine a
> hack that forks out a gdb process and translates JDI invocations to gdb
> commands, but this seems very kludgy. Directly adding JDWP support to gdb
> would probably be a lot cleaner.

JDWP-over-gdb must be possible.

> My proposal seems like an excellent way to shoot oneself into the foot.
> On the other hand, it would be nice if the debugging stuff could at least
> partially be common between free VMs.
>
> What do people think?
>
> [1] http://java.sun.com/j2se/1.5.0/docs/guide/jpda/
> [2] http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdwp-spec.html
> [3] http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html
> [4] http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/

I think that's a nice set of references anyway. :)

On the whole I think it's a good idea.  I'm just a little nervous of the size 
of the JDI stuff - it's all very nicely object-oriented, but it could end up 
using a fair amount of RAM (by embedded standards).

The other thing to worry about is the issue of using the VM to debug itself. 
When you request notification of a ClassPrepareEvent, the first thing you see 
may well be the preparation of class ClassPrepareEvent. :) This gets me 
thinking about the possibility of running two VMs in one address space, one 
for the "real" VM and one for JPDA ...

Chris
 

-- 
Chris Gray                                  /k/ Embedded Java Solutions
Embedded & Mobile Java, OSGi              http://www.kiffer.be/k/
address@hidden                                      +32 3 216 0369




reply via email to

[Prev in Thread] Current Thread [Next in Thread]