I tested JPDA with JDE (http://sunsite.auc.dk/jde, jde-2.1.6beta13) on
the Sun/Inprise release and on the (unreleased) Blackdown
jdk-1.2.2-RC4. Neither variant worked.
On Sun/Inprise, the vm initialization failed and there was no output.
On Blackdown/RC4, initialization succeeded but the application vm
crashed before hitting the break at Main. The JDE interaction buffer,
Debugger output and thread dump follow:
The test program is HelloWorld:
public class Test extends Object
{
public static void main( String[] args )
{
System.out.println( "Hello World" );
}
}
I plan on chasing down the RC4 problem, but I don't expect it will be
easy. Anyone who wants to jump on this bandwagon ... welcome. :-)
-pmr
*JDebug*
java -classpath /projects/jde/java/lib/jde.jar:/data/pmr/java/jdk/lib/jpda.jar
jde.debugger.Main
(jde-dbo-init-debug-session)
JDE> -1 2 launch 2 -use_executable java -classpath /home/pmr/test -Xms16m -Xmx96m Test
(jde-dbo-message
2 "Launched VM Java Debug Interface (Reference Implementation) version 1.3
Java Debug Wire Protocol (Reference Implementation) version 1.0
JVM Debug Interface version 1.0
JVM version 1.2.2 (Classic VM, build Linux_JDK_1.2.2_RC4, green threads, nojit)")
(jde-dbo-command-result 2 3902)
JDE> 2 3 run
(jde-dbo-command-result 3)
(jde-dbo-event-set
2 "all"
(list "Thread" 1 "main" "waiting on monitor" "suspended by debugger")
(list 'jde-dbo-vm-start-event))
(jde-dbo-message 2 "Application I/O closed")
(jde-dbo-error 2 "Input error; application I/O closed")
(jde-dbo-message 2 "Application I/O closed")
Reaped pid = 14171, status = 1
(jde-dbo-event-set 2 "none" nil
(list 'jde-dbo-vm-disconnected-event))
*** Debugger Output for Process Test(2) ***
Launched VM Java Debug Interface (Reference Implementation) version 1.3
Java Debug Wire Protocol (Reference Implementation) version 1.0
JVM Debug Interface version 1.0
JVM version 1.2.2 (Classic VM, build Linux_JDK_1.2.2_RC4, green threads, nojit)
Launching vm to run Test
Running Test.
vm started...
All threads suspended...
Application I/O closed
Input error; application I/O closed
Application I/O closed
vm disconnected...
*** Thread Dump ***
OUCH: nested memory code, to 1 levels.
SIGABRT 6* abort (generated by abort(3) routine, also SIGIOT)
stackpointer=0xbfffe2f4
OUCH: nested memory code, to 1 levels.
Full thread dump Classic VM (Linux_JDK_1.2.2_RC4, green threads):
"JDWP Command Reader" (TID:0x4122c710, sys_thread_t:0x81979b0, state:CW) prio=5
"JDWP Event Helper Thread" (TID:0x4122c570, sys_thread_t:0x8196088, state:CW)
prio=5
"JDWP Transport Listener: dt_socket" (TID:0x4122c590, sys_thread_t:0x81930e8,
state:CW) prio=5
"Finalizer" (TID:0x41227320, sys_thread_t:0x8122840, state:CW) prio=8
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:112)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:174)
"Reference Handler" (TID:0x412273b0, sys_thread_t:0x811dce8, state:CW) prio=10
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:424)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:114)
"Signal dispatcher" (TID:0x412273e0, sys_thread_t:0x811a488, state:CW) prio=5
"main" (TID:0x412271e0, sys_thread_t:0x804c6c0, state:R) prio=5
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.loadClass(ClassLoader.java:285)
at java.lang.ClassLoader.loadClass(ClassLoader.java:283)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:275)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Monitor Cache Dump:
java.lang.ref.Reference$Lock@412273C0/4155CB20: <unowned>
Waiting to be notified:
"Reference Handler" (0x811dce8)
java.lang.Class@4122C548/415823A8: owner "main" (0x804c6c0) 1 entry
java.lang.ref.ReferenceQueue$Lock@41227338/4155D028: <unowned>
Waiting to be notified:
"Finalizer" (0x8122840)
sun.misc.Launcher$ExtClassLoader@4122BE70/4157FA68: owner "main" (0x804c6c0) 1
entry
sun.misc.Launcher$AppClassLoader@4122C240/415815F8: owner "main" (0x804c6c0) 3
entries
Registered Monitor Dump:
JDWP Command Queue Lock: <unowned>
Waiting to be notified:
"JDWP Transport Listener: dt_socket" (0x81930e8)
JDWP Event Helper Completion Monitor: <unowned>
JDWP Event Helper Queue Monitor: <unowned>
Waiting to be notified:
"JDWP Event Helper Thread" (0x8196088)
JDWP Event Handler Lock: <unowned>
JDWP Transport Send Monitor: <unowned>
JDWP Transport Listener Monitor: <unowned>
JDWP Initialization Monitor: <unowned>
JDWP Invocation Lock: <unowned>
JDWP Step Handler Lock: <unowned>
JDWP Thread Lock: <unowned>
JDWP Reference Table Monitor: <unowned>
JDWP Alloc Lock: <unowned>
utf8 hash table: <unowned>
JNI pinning lock: <unowned>
JNI global reference lock: <unowned>
BinClass lock: <unowned>
Class linking lock: <unowned>
System class loader lock: <unowned>
Code rewrite lock: <unowned>
Heap lock: <unowned>
Monitor cache lock: owner "main" (0x804c6c0) 1 entry
Dynamic loading lock: <unowned>
Monitor IO lock: <unowned>
User signal monitor: <unowned>
Waiting to be notified:
"Signal dispatcher" (0x811a488)
Child death monitor: <unowned>
I/O monitor: <unowned>
Alarm monitor: <unowned>
Waiting to be notified:
<unknown thread> (0x8056b20)
Thread queue lock: owner "main" (0x804c6c0) 1 entry
Monitor registry: owner "main" (0x804c6c0) 1 entry
OUCH: nested memory code, to 1 levels.
OUCH: nested memory code, to 1 levels.
Process Test(2) CLI exited abnormally with code 256