relax! the current command-line interface that you'll get should be pretty
intuitive for users that want to use it: we're hoping only advanced users will
use that option anyway.
i'm posting a pure command line interaction for those interested. the javadoc
accompanying the jde (or one that you can generate from the accompanying source)
has detailed description of what each field of the lisp forms returned
represent, so although it looks cryptic here, you can get a hang of it pretty
quickly.
the first section is just the commands (all supported commands except "evaluate"
are included)
note that there are two syntaxes (sp?) for breakpoints (and others):
break absolute Test.java 42 if "i == 15" on_thread_name "Thread 1"
using_suspend_policy "none"
break absolute Test.java 42 -e "i == 15" -tname "Thread 1" -sp none
have fun!
amit
ps: small note: once you launch an app, a port id is returned that you "telnet"
to in order to access app i/o.
---------
section 1
---------
-1 1 launch 1 test.Test
1 2 trace_classes preparation -sp none -cef "java.*,sun.misc.*,sun.security.*"
1 3 get_threads
1 4 trace_threads start -sp none
; request #2
1 5 trace_methods entry -sp none -cef "java.*, sun.*"
1 6 get_path_information
1 7 get_loaded_classes
1 8 run
1 9 suspend
1 10 cancel_trace_methods 2
1 11 trace_methods entry -sp none -cef "java.*, sun.*" -tname "Thread 1,
continuous"
1 12 resume
1 13 suspend
1 14 get_threads
; thread 1
1 15 get_thread 173
1 16 get_object 177
1 17 get_string 177
1 18 get_object_monitors 177
1 19 get_array 180 0 5
; thread 1
1 20 get_locals 173 0
; thread 1
1 21 step out 173
; thread 1
1 22 get_thread 173
; spec #4
1 23 break absolute Test.java 61 -e "i == 25" -tid 173
1 24 resume
1 25 clear 4
1 26 watch "*.Test" continuous for_access -tid 173 -oid 173 -sp none
1 27 resume
1 28 finish
---------
section 2
------------------------------------------------------------------------
sample:
asj(111): java jde.debugger.Main
(jde-dbo-init-debug-session)
-1 1 launch 1 test.Test
(jde-dbo-command-result 1 39039)
(jde-dbo-event-set
1 "all"
(list "Thread" 1 "main" "waiting on monitor" "suspended by debugger")
(list 'jde-dbo-vm-start-event))
1 2 trace_classes preparation -sp none -cef "java.*,sun.misc.*,sun.security.*"
(jde-dbo-command-result 2 0)
1 3 get_threads
(jde-dbo-command-result
3 (list
(list "ThreadGroup" 2 "system"
(list
(list "Thread" 3 "Signal dispatcher" "waiting" "suspended by debugger")
(list "Thread" 4 "Reference Handler" "waiting" "suspended by debugger")
(list "Thread" 5 "Finalizer" "waiting" "suspended by debugger"))
(list
(list "ThreadGroup" 6 "main"
(list
(list "Thread" 1 "main" "waiting on monitor" "suspended by
debugger"))
(list))))))
1 4 trace_threads start -sp none
(jde-dbo-command-result 4 1)
1 5 trace_methods entry -sp none -cef "java.*, sun.*"
(jde-dbo-command-result 5 2)
1 6 get_path_information
(jde-dbo-command-result
6 "/home/amitkr/java/jdebug/class"
(list "/usr/local/java/jdk1.2.2/solaris/jre/lib/rt.jar"
"/usr/local/java/jdk1.2.2/solaris/jre/lib/i18n.jar"
"/usr/local/java/jdk1.2.2/solaris/jre/classes")
(list "." "/home/amitkr/java/jpda/lib/jpda.jar"))
1 7 get_loaded_classes
(jde-dbo-command-result
7 (list "java.io.BufferedInputStream" "java.io.BufferedOutputStream"
"java.io.BufferedWriter" "java.io.File" "java.io.FileDescriptor"
"java.io.FileInputStream" "java.io.FileNotFoundException"
"java.io.FileOutputStream" "java.io.FileSystem" "java.io.FilterInputStream"
"java.io.FilterOutputStream" "java.io.IOException" "java.io.InputStream"
"java.io.ObjectStreamClass$CompareClassByName"
"java.io.ObjectStreamClass$CompareMemberByName"
"java.io.ObjectStreamClass$ObjectStreamClassEntry" "java.io.ObjectStreamClass"
"java.io.ObjectStreamField" "java.io.OutputStream" "java.io.OutputStreamWriter"
"java.io.PrintStream" "java.io.Serializable" "java.io.UnixFileSystem"
"java.io.Writer" "java.lang.Character" "java.lang.Class" "java.lang.ClassLoader"
"java.lang.Cloneable" "java.lang.Comparable" "java.lang.Compiler"
"java.lang.Error" "java.lang.Exception" "java.lang.InheritableThreadLocal"
"java.lang.LinkageError" "java.lang.NoClassDefFoundError" "java.lang.Object"
"java.lang.OutOfMemoryError" "java.lang.Runnable" "java.lang.RuntimeException"
"java.lang.StackOverflowError" "java.lang.String$CaseInsensitiveComparator"
"java.lang.String" "java.lang.StringBuffer" "java.lang.System"
"java.lang.Thread" "java.lang.ThreadDeath" "java.lang.ThreadGroup"
"java.lang.ThreadLocal" "java.lang.Throwable" "java.lang.VirtualMachineError"
"java.lang.ref.FinalReference" "java.lang.ref.Finalizer$FinalizerThread"
"java.lang.ref.Finalizer" "java.lang.ref.PhantomReference"
"java.lang.ref.Reference$Lock" "java.lang.ref.Reference$ReferenceHandler"
"java.lang.ref.Reference" "java.lang.ref.ReferenceQueue$Lock"
"java.lang.ref.ReferenceQueue$Null" "java.lang.ref.ReferenceQueue"
"java.lang.ref.SoftReference" "java.lang.ref.WeakReference"
"java.lang.reflect.AccessibleObject" "java.lang.reflect.Member"
"java.lang.reflect.Method" "java.lang.reflect.ReflectPermission" "java.net.URL"
"java.net.URLClassLoader" "java.net.URLStreamHandler"
"java.net.URLStreamHandlerFactory" "java.security.AccessControlContext"
"java.security.AccessController" "java.security.BasicPermission"
"java.security.CodeSource" "java.security.Guard" "java.security.Permission"
"java.security.PermissionCollection" "java.security.PrivilegedAction"
"java.security.PrivilegedExceptionAction" "java.security.ProtectionDomain"
"java.security.SecureClassLoader" "java.util.AbstractCollection"
"java.util.AbstractList" "java.util.AbstractMap" "java.util.ArrayList"
"java.util.Collection" "java.util.Comparator" "java.util.Dictionary"
"java.util.Enumeration" "java.util.HashMap$Entry" "java.util.HashMap"
"java.util.Hashtable$Entry" "java.util.Hashtable" "java.util.List"
"java.util.Locale" "java.util.Map$Entry" "java.util.Map" "java.util.Properties"
"java.util.Stack" "java.util.StringTokenizer" "java.util.Vector"
"sun.io.ByteToCharASCII" "sun.io.ByteToCharConverter" "sun.io.CharToByteASCII"
"sun.io.CharToByteConverter" "sun.io.CharacterEncoding" "sun.io.Converters"
"sun.misc.Launcher$1" "sun.misc.Launcher$2" "sun.misc.Launcher$3"
"sun.misc.Launcher$AppClassLoader" "sun.misc.Launcher$ExtClassLoader"
"sun.misc.Launcher$Factory" "sun.misc.Launcher" "sun.misc.PathPermissions"
"sun.misc.URLClassPath" "sun.net.www.protocol.file.Handler"
"sun.net.www.protocol.jar.Handler" "sun.security.action.GetPropertyAction"
"sun.security.util.Debug" "java.security.ProtectionDomain[]"))
1 8 run
(jde-dbo-command-result 8)
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-thread-start-event
(list "Thread" 1 "main" "runnable" "normal")))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-class-prepare-event "sun.net.www.ParseUtil"))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-class-prepare-event "sun.io.ByteToCharISO8859_1"))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-class-prepare-event "sun.net.www.URLConnection"))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-class-prepare-event
"sun.net.www.protocol.file.FileURLConnection"))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-class-prepare-event "sun.net.www.MessageHeader"))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-class-prepare-event "test.Test"))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "<clinit>" "void"
(list) "static" "static_initializer")))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "main" "void"
(list "java.lang.String[]") "static")))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "<init>" "void"
(list "int" "boolean") "constructor")))
(jde-dbo-event-set
1 "none"
(list "Thread" 1 "main" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "<init>" "void"
(list "int" "boolean") "constructor")))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-thread-start-event
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")))
(jde-dbo-event-set
1 "none"
(list "Thread" 174 "Thread 2" "runnable" "normal")
(list 'jde-dbo-thread-start-event
(list "Thread" 174 "Thread 2" "runnable" "normal")))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "waiting" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "run" "void"
(list))))
(jde-dbo-event-set
1 "none"
(list "Thread" 174 "Thread 2" "waiting on monitor" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "run" "void"
(list))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "waiting" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 174 "Thread 2" "waiting on monitor" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 174 "Thread 2" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
1 9 suspend
(jde-dbo-command-result 9)
1 10 cancel_trace_methods 2
(jde-dbo-command-result 10)
1 11 trace_methods entry -sp none -cef "java.*, sun.*" -tname "Thread 1,
continuous"
(jde-dbo-command-result 11 3)
1 12 resume
(jde-dbo-command-result 12)
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "waiting on monitor" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
1 13 suspend
(jde-dbo-command-result 13)
1 14 get_threads
(jde-dbo-command-result
14 (list
(list "ThreadGroup" 2 "system"
(list
(list "Thread" 3 "Signal dispatcher" "waiting" "suspended by debugger")
(list "Thread" 4 "Reference Handler" "waiting" "suspended by debugger")
(list "Thread" 5 "Finalizer" "waiting" "suspended by debugger"))
(list
(list "ThreadGroup" 6 "main"
(list
(list "Thread" 1 "main" "runnable" "suspended by debugger")
(list "Thread" 173 "Thread 1, continuous" "waiting on monitor"
"suspended
by debugger")
(list "Thread" 174 "Thread 2" "waiting on monitor" "suspended by
debugger"))
(list))))))
1 15 get_thread 173
(jde-dbo-report-ids-in-use 1)
(jde-dbo-command-result
15 (list "Thread" 173 "Thread 1, continuous" "waiting on monitor" "suspended by
debugger"
(list
(list 0 "test.Test" "Test.java" 52))
(list)
(list "java.lang.String" 175 nil)))
1 16 get_object 175
(jde-dbo-command-result
16 (list "java.lang.String" 175 nil
(list
((list "count" "int") . (list "int" 14))
((list "btcConverter" "java.lang.ThreadLocal" "static") . (list "null"))
((list "ctbConverter" "java.lang.ThreadLocal" "static") . (list "null"))
((list "serialVersionUID" "long" "final" "static") . (list "long"
-6849794470754667710))
((list "value" "char[]") . (list "char[]" 178 nil))
((list "serialPersistentFields" "java.io.ObjectStreamField[]" "final"
"static") . (list "java.io.ObjectStreamField[]" 176 nil))
((list "offset" "int") . (list "int" 0))
((list "CASE_INSENSITIVE_ORDER" "java.util.Comparator" "final" "static") .
(list "java.lang.String$CaseInsensitiveComparator" 177 nil)))))
1 17 get_string 175
(jde-dbo-command-result 17 (list "java.lang.String" 175 nil "Local Variable"))
1 18 get_object_monitors 175
(jde-dbo-command-result
18 (list 175 "java.lang.String" nil
(list "Thread" 174 "Thread 2" "waiting on monitor" "suspended by debugger")
(list
(list "Thread" 173 "Thread 1, continuous" "waiting on monitor" "suspended by
debugger"))))
1 19 get_array 178 0 5
(jde-dbo-command-result
19 (list "char[]" 178 nil 14 (list "char" 'L') (list "char" 'o') (list "char"
'c') (list "char" 'a') (list "char" 'l')))
1 20 get_locals 173 0
(jde-dbo-command-result
20 (list
((list "str" "java.lang.String") . (list "null"))
((list "in" "java.io.BufferedReader") . (list "java.io.BufferedReader" 181
nil))
((list "i" "int") . (list "int" 5))))
1 21 step into 173
(jde-dbo-command-result 21)
(jde-dbo-event-set
1 "all"
(list "Thread" 173 "Thread 1, continuous" "runnable" "suspended by debugger")
(list 'jde-dbo-step-event(list "test.Test" "Test.java" 53)))
1 22 get_thread 173
(jde-dbo-command-result
22 (list "Thread" 173 "Thread 1, continuous" "runnable" "suspended by debugger"
(list
(list 0 "test.Test" "Test.java" 53))
(list
(list "java.lang.String" 175 nil))
nil))
1 23 break absolute Test.java 61 -e "i == 9" -tid 173
(jde-dbo-spec-resolved 1 4)
(jde-dbo-command-result 23 4)
1 24 resume
(jde-dbo-command-result 24)
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "waiting on monitor" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "all"
(list "Thread" 173 "Thread 1, continuous" "runnable" "suspended at breakpoint")
(list 'jde-dbo-breakpoint-hit-event 4
(list "test.Test" "Test.java" 61) (list "on_thread_id" 173) (list "i ==
9")))
1 25 clear 4
(jde-dbo-command-result 25)
1 26 watch "*.Test" continuous for_access -tid 173 -oid 173 -sp none
(jde-dbo-spec-resolved 1 5)
(jde-dbo-command-result 26 5)
1 27 resume
(jde-dbo-command-result 27)
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "waiting on monitor" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-watchpoint-hit-event 5
(list "test.Test" 173 nil)
((list "continuous" "boolean") . (list "boolean" "true"))
(list "test.Test" "Test.java" 62)
(list 173) (list "on_thread_id" 173) nil))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
(jde-dbo-event-set
1 "none"
(list "Thread" 173 "Thread 1, continuous" "runnable" "normal")
(list 'jde-dbo-method-entry-event
(list "test.Test" "testFunction" "void"
(list "int"))))
1 28 finish
(jde-dbo-command-result 28)
(jde-dbo-error 1 "Input stream raised an exception!")
(jde-dbo-event-set 1 "none" nil
(list 'jde-dbo-vm-disconnected-event))
-1 1 quit
(jde-dbo-command-result 1)
asj(112):