Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jdt-debug-dev] Out of synch code.

Issue: 
- We want to show the user if the code running on the VM is the same as 
the code in the editor

Scenarios where this is necessary:
- Failed HCR. The code on the VM is the old code for the duration of the 
run.
- Successful HCR, failed drop to frame. The code on the VM is the old code 
until the next time the changed code is called.

UI recommendation:
After either of the above scenarios occurs:
- When suspended, out of synch stack frames (and parent thread, target) 
should render with a small red X in a circle (shrunken marker from the 
editors) appearing in the top left corner of the icon. Mousing over or 
clicking on the icon, will yield pop-up help informing the user that the 
code running in the VM is not the same as the code in the workspace.
- When running, threads (and parent target) will render with a small 
yellow exclamation point in a triangle (again, shrunken marker from the 
editors) appearing in the top left corner of the icon. Mousing over of 
clicking on the icon will yield pop-up help informing the user that the 
code running in the VM may not be the same as the code in the workspace. 
Red X's will take precedence over yellow !'s.

Implementation:
- Add API to JDIDebugElement: 
        #isOutOfSynch
        #mayBeOutOfSynch
        JDIModelPresentation uses this API to determine rendering
- Add API to JDIDebugTarget:
        #hasHCRFailed
JDIDebugTarget records which types have failed an HCR.
        JDIStackFrame answers #is/mayBe OutOfSynch by asking the
                debug target if hasHCRFailed and if the type it is in has failed an HCR.
                Stack frames will also be responsible for remembering when 
a drop to
                frame failed for their type after an HCR. If this is true, 
it will answer yes to
                isOutOfSynch.
        When suspended, JDIThread answers #is/mayBe OutOfSynch 
                by asking its stack frames if they are/may be out of synch
        When running, JDIThread answers #is/mayBe OutOfSynch by asking
                its debug target if hasHCRFailed.
        JDIDebugTarget answers #is/mayBe OutOfSynch by asking its threads
                if they are/may be out of synch



Back to the top