1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

[258284] With the latest fixed to GDB, we can use the CLI commands for reverse debugging. The MI commands are not yet available in GDB.

This commit is contained in:
Marc Khouzam 2009-04-13 13:48:20 +00:00
parent f806e4b989
commit e080fa5221
7 changed files with 22 additions and 55 deletions

View file

@ -270,30 +270,13 @@ public class GDBRunControl_7_0 extends MIRunControl implements IReverseRunContro
// as soon as we send a resume command.
getCache().setContextAvailable(context, false);
// temporary
final MIExecReverseContinue finalcmd = cmd;
final IExecutionDMContext finaldmc = context;
getConnection().queueCommand(
new RawCommand(finaldmc, "set exec-direction reverse"), //$NON-NLS-1$
new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
public void handleSuccess() {
getConnection().queueCommand(finalcmd, new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
public void handleCompleted() {
if (!isSuccess()) {
setResumePending(false);
getCache().setContextAvailable(context, true);
}
getConnection().queueCommand(
new RawCommand(finaldmc, "set exec-direction forward"), //$NON-NLS-1$
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
}
});
}
});
// end temporary
getConnection().queueCommand(cmd, new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
public void handleFailure() {
setResumePending(false);
getCache().setContextAvailable(context, true);
}
});
} else {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, INVALID_STATE, "Given context: " + context + ", is already running or reverse not enabled.", null)); //$NON-NLS-1$ //$NON-NLS-2$
rm.done();
@ -359,30 +342,14 @@ public class GDBRunControl_7_0 extends MIRunControl implements IReverseRunContro
fReverseStepping = true;
getCache().setContextAvailable(context, false);
// temporary
final MICommand<MIInfo> finalcmd = cmd;
final IExecutionDMContext finaldmc = context;
getConnection().queueCommand(
new RawCommand(finaldmc, "set exec-direction reverse"), //$NON-NLS-1$
new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
public void handleSuccess() {
getConnection().queueCommand(finalcmd, new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
public void handleCompleted() {
if (!isSuccess()) {
setResumePending(false);
fReverseStepping = false;
getCache().setContextAvailable(context, true);
}
getConnection().queueCommand(
new RawCommand(finaldmc, "set exec-direction forward"), //$NON-NLS-1$
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
}
});
}
});
// end temporary
getConnection().queueCommand(cmd, new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
public void handleFailure() {
setResumePending(false);
fReverseStepping = false;
getCache().setContextAvailable(context, true);
}
});
}
/** @since 2.0 */

View file

@ -21,6 +21,6 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
public class MIExecReverseContinue extends MICommand<MIInfo> {
public MIExecReverseContinue(IExecutionDMContext dmc) {
super(dmc, "-exec-continue"); //$NON-NLS-1$
super(dmc, "-interpreter-exec", new String[] {"console", "reverse-continue"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}

View file

@ -25,6 +25,6 @@ public class MIExecReverseNext extends MICommand<MIInfo> {
}
public MIExecReverseNext(IExecutionDMContext dmc, int count) {
super(dmc, "-exec-next", new String[] { Integer.toString(count) }); //$NON-NLS-1$
super(dmc, "-interpreter-exec", new String[] {"console", "reverse-next " + Integer.toString(count) }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}

View file

@ -25,6 +25,6 @@ public class MIExecReverseNextInstruction extends MICommand<MIInfo> {
}
public MIExecReverseNextInstruction(IExecutionDMContext dmc, int count) {
super(dmc, "-exec-nexti", new String[] { Integer.toString(count) }); //$NON-NLS-1$
super(dmc, "-interpreter-exec", new String[] {"console", "reverse-nexti " + Integer.toString(count) }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}

View file

@ -24,6 +24,6 @@ public class MIExecReverseStep extends MICommand<MIInfo> {
this(dmc, 1);
}
public MIExecReverseStep(IExecutionDMContext dmc, int count) {
super(dmc, "-exec-step", new String[] { Integer.toString(count) }); //$NON-NLS-1$
super(dmc, "-interpreter-exec", new String[] {"console", "reverse-step " + Integer.toString(count) }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}

View file

@ -24,6 +24,6 @@ public class MIExecReverseStepInstruction extends MICommand<MIInfo> {
this(dmc, 1);
}
public MIExecReverseStepInstruction(IExecutionDMContext dmc, int count) {
super(dmc, "-exec-stepi", new String[] { Integer.toString(count) }); //$NON-NLS-1$
super(dmc, "-interpreter-exec", new String[] {"console", "reverse-stepi " + Integer.toString(count) }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}

View file

@ -17,11 +17,11 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
* Steps backward until the line where the current method
* was originally called.
*
* @since 2.0
* @since 2.0
*/
public class MIExecUncall extends MICommand<MIInfo> {
public MIExecUncall(IFrameDMContext dmc) {
super(dmc, "-exec-finish"); //$NON-NLS-1$
super(dmc, "-interpreter-exec", new String[] {"console", "reverse-finish"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}