[
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