The JVM debugger interface provides an API to set method exit breakpoints and retrieve a return value when such a breakpoint is hit. However, these breakpoints lead to significant performance degradation in the debuggee application. Because of this, IntelliJ IDEA introduced emulated method breakpoints implemented using regular breakpoints. Unfortunately, access to the return value information was lost for such breakpoints.
Your task is to eliminate this limitation and make it possible to obtain return values for emulated method exit breakpoints. You will study how emulated method breakpoints are implemented and why scanning a method's bytecode is required for this. Then, you will develop a new approach based on multi-stage breakpoints that enables the debugger to finally retrieve return values (IDEA-385867).
Currently pursuing or recently graduated with a degree in Computer Science or a related field.
Programming experience in Java, Kotlin, or a similar language.
Nice to have:
Experience with systems programming (compilers, interpreters, debuggers).
Location:
The internship will take place in Munich. Contact us if you have any questions about it.