JDWP agent is a native component of Java Debug Platform Architecture (JPDA).
It provides Harmony JRE with an ability to debug Java application using Eclipse debugger.
This implementation follows JPDA specification version 1.5 and is based on JVMTI interface provided by both DRLVM and IBM VME.
See README.txt for more details.
Description
JDWP agent is a native component of Java Debug Platform Architecture (JPDA).
It provides Harmony JRE with an ability to debug Java application using Eclipse debugger.
This implementation follows JPDA specification version 1.5 and is based on JVMTI interface provided by both DRLVM and IBM VME.
See README.txt for more details.
After lots of merging with other submitted JIRAs I've created this patch to bind them all :). I can now step in when
debugging a simple application in eclipse on JIT!!
The following problems were fixed in this patch:
- Fixed raise area status for calling method_exit from exception throwing function
- Fixed next bytecode prediction from native code.The bytecode which should be marked for single stepping should be
the next one after the currently stopped in Java
- Fixed single stepping in interpreter. Single step flag should be cleared for every bytecode. Also created M2N
transition for many JVMTI calls into VM like field watching, breakpoint and single step.
- Fixed prediction of invokevirtual and invokeinterface bytecodes. This is a very tricky part, it parses the JIT
generated code
- Fixed prediction of return bytecodes which may return to a tail of invoke* instruction based on information from
stack_iterator
- Fixed disassembler to ignore AL, XMM and other registers which aren't needed
- Fixed disassembler constructors to initialize all fields
- Changed disassembler interface to allow getting register information for parsed instruction
- Fixed NT debugging style from int3 to CLI which eases debugging JVMTI breakpoints under VS.NET debugger. This is by
far more convenient when debugging the debugger because otherwise VC.NET studio reacts to int3 as if it is a runtime
breakpoint and doesn't allow the application to receive the exception.
- Fixed class loader class_get_method_from_vt_offset function to return correct information
- Fixed breakpoints implementation to work correctly for indirect jump/call. This is also a tricky part, it parses
code for invokevirtual bytecode which VM generates.
- Added missing synchronization locks for interprter handler of breakpoints
On interpreter stepping seems to work ok (to use interpreter specify -Xint in VM option in debugging dialog). Step
out on JIT still doesn't work however...
To let eclipse debugging it is necessary to build JDWP agent in HARMONY-1410 and place DLL/lib*.so files in drlvm bin
directory.
It looks like if no one takes an action, this valuable contribution will be on hold forever. I'm going to help with integration. I've assigned all blocking JIRAs to myself too.
But it doesn't mean I'd like to do all the work. I would be grateful for the patches like in HARMONY-2180. Please keep in mind that the main deevlopment infrastructure should be resided in federated build repository in enhanced/trunk, in case of jdktools it should be in working_jdktools.
Gregory Shimansky added a comment - 22/Nov/06 11:45 PM It looks like if no one takes an action, this valuable contribution will be on hold forever. I'm going to help with integration. I've assigned all blocking JIRAs to myself too.
But it doesn't mean I'd like to do all the work. I would be grateful for the patches like in HARMONY-2180. Please keep in mind that the main deevlopment infrastructure should be resided in federated build repository in enhanced/trunk, in case of jdktools it should be in working_jdktools.
Ilya is still working on HARMONY-2180 for updating jdktools directory and creating common build support. After this work is completed, we are going to provide a patch for JDWP agent contribution to be easily intergated into this new structure.
Ivan Popov added a comment - 23/Nov/06 08:51 AM Ilya is still working on HARMONY-2180 for updating jdktools directory and creating common build support. After this work is completed, we are going to provide a patch for JDWP agent contribution to be easily intergated into this new structure.