Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Khouzam2016-03-23 15:11:51 +0000
committerMarc Khouzam2016-03-29 13:59:41 +0000
commit6d5e31038c76245ebd4b61f0e17929e76ebbc3e8 (patch)
tree93d23c2e00b1fa0d0970deb70dde65b26d6f100e
parent64e713795980d088bb2094634fd90a048359575d (diff)
downloadorg.eclipse.cdt-6d5e31038c76245ebd4b61f0e17929e76ebbc3e8.tar.gz
org.eclipse.cdt-6d5e31038c76245ebd4b61f0e17929e76ebbc3e8.tar.xz
org.eclipse.cdt-6d5e31038c76245ebd4b61f0e17929e76ebbc3e8.zip
Bug 488661: Simplification of reverse debugging code
Most changes are cosmetics (name of local variables, javadoc, etc). The note-worthy ones are: 1- Change terminology in IChangeReverseMethodHandler to be a little clearer. This causes changes in multiple files, but it was all automated. 2- Remove ReverseDebugMethod.INVALID which was used as an error code and not a ReverseDebugMethod value. 3- In GdbReverseToggleCommand, provide a different error message if there is a failure to set ProcessTrace vs BranchTrace and tell user what to do. 4- Reworked GdbReverseToggleCommand#getReverseDebugMethod in attempt to make the code easier to understand. No actual change in functionality. Change-Id: Ibdc14faff1220e6a20319644b49e641c2101e762
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IChangeReverseMethodHandler.java26
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java54
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java148
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.java6
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.properties5
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_10.java10
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_10.java22
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IReverseRunControl2.java14
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java12
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIRecord.java16
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/CLIInfoRecordInfo.java14
12 files changed, 188 insertions, 143 deletions
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IChangeReverseMethodHandler.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IChangeReverseMethodHandler.java
index 63036bee9bf..dea2bf8b09a 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IChangeReverseMethodHandler.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IChangeReverseMethodHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 Intel Corporation and others.
+ * Copyright (c) 2015, 2016 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -13,22 +13,30 @@ package org.eclipse.cdt.debug.core.model;
import org.eclipse.debug.core.commands.IDebugCommandHandler;
/**
- * Handler interface for the reverse debug change trace method command
+ * Handler interface for the reverse debug change method command
*
* @since 8.0
*/
public interface IChangeReverseMethodHandler extends IReverseToggleHandler, IDebugCommandHandler {
- public enum ReverseTraceMethod {INVALID, STOP_TRACE, FULL_TRACE, HARDWARE_TRACE, BRANCH_TRACE, PROCESSOR_TRACE, GDB_TRACE};
+ /**
+ * List of different values for the reverse debugging method.
+ */
+ enum ReverseDebugMethod {OFF, SOFTWARE, HARDWARE, BRANCH_TRACE, PROCESSOR_TRACE, GDB_TRACE};
- void setTraceMethod(ReverseTraceMethod traceMethod);
+ /**
+ * Sets the value for the reverse debugging method to be used when the button is toggled.
+ */
+ void setReverseDebugMethod(ReverseDebugMethod traceMethod);
/**
- * get the trace method
- * @return FullTrace, BranchTrace, ProcessorTrace
- *
+ * Return the reverse debugging method currently selected.
*/
- ReverseTraceMethod getTraceMethod(Object context);
+ ReverseDebugMethod getReverseDebugMethod(Object context);
- ReverseTraceMethod getLastTraceMethod(Object context);
+ /**
+ * Return the reverse debugging method that was selected before the
+ * currently selected one.
+ */
+ ReverseDebugMethod getPreviousReverseDebugMethod(Object context);
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java
index 4be744d5d77..a3599be32df 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java
@@ -15,7 +15,7 @@ import java.net.URL;
import java.util.Map;
import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
import org.eclipse.cdt.debug.core.model.IReverseToggleHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
@@ -80,9 +80,9 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
// We must hard-code the command id so as to know it from the very start (bug 290699)
private static final String REVERSE_TOGGLE_COMMAND_ID = "org.eclipse.cdt.debug.ui.command.reverseToggle"; //$NON-NLS-1$
- private Object fActiveContext = null;
- private IReverseToggleHandler fTargetAdapter = null;
- private IDebugContextService fContextService = null;
+ private Object fActiveContext;
+ private IReverseToggleHandler fTargetAdapter;
+ private IDebugContextService fContextService;
private static ImageDescriptor getImageDescriptor (String path) {
Bundle bundle = Platform.getBundle("org.eclipse.cdt.debug.ui"); //$NON-NLS-1$
@@ -106,7 +106,6 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
// This constructor might be called after the launch, so we must refresh here too.
// This can happen if we activate the action set after the launch.
refresh(fContextService.getActiveContext());
-
}
}
}
@@ -165,7 +164,7 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
- ReverseTraceMethod traceMethod;
+ ReverseDebugMethod newMethod;
try {
if (HandlerUtil.matchesRadioState(event)) {
return null;
@@ -174,11 +173,11 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
String radioState = event.getParameter(RadioState.PARAMETER_ID);
if (radioState.equals("UseSoftTrace")) { //$NON-NLS-1$
- traceMethod = ReverseTraceMethod.FULL_TRACE;
+ newMethod = ReverseDebugMethod.SOFTWARE;
} else if (radioState.equals("TraceOff")) { //$NON-NLS-1$
- traceMethod = ReverseTraceMethod.STOP_TRACE;
+ newMethod = ReverseDebugMethod.OFF;
} else if (radioState.equals("UseHardTrace")) { //$NON-NLS-1$
- traceMethod = ReverseTraceMethod.HARDWARE_TRACE;
+ newMethod = ReverseDebugMethod.HARDWARE;
} else {
// undefined trace method
throw new ExecutionException(Messages.ReverseDebugging_UndefinedTraceMethod);
@@ -186,10 +185,11 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
// store the parameter in the gdb command handler class
if (fTargetAdapter != null && fTargetAdapter instanceof IChangeReverseMethodHandler) {
- ReverseTraceMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext);
- if (currMethod == traceMethod)
+ ReverseDebugMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getReverseDebugMethod(fActiveContext);
+ if (currMethod == newMethod) {
return null;
- ((IChangeReverseMethodHandler)fTargetAdapter).setTraceMethod(traceMethod);
+ }
+ ((IChangeReverseMethodHandler)fTargetAdapter).setReverseDebugMethod(newMethod);
}
// execute the event
@@ -203,18 +203,18 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
// Disable tracing
if (fTargetAdapter != null && fTargetAdapter instanceof IChangeReverseMethodHandler) {
if (fTargetAdapter.toggleNeedsUpdating()) {
- ReverseTraceMethod LastTraceMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getLastTraceMethod(fActiveContext);
- ReverseTraceMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext);
- if (currMethod == ReverseTraceMethod.STOP_TRACE) {
- if (LastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
- traceMethod = ReverseTraceMethod.HARDWARE_TRACE;
+ ReverseDebugMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getReverseDebugMethod(fActiveContext);
+ if (currMethod == ReverseDebugMethod.OFF) {
+ ReverseDebugMethod prevMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getPreviousReverseDebugMethod(fActiveContext);
+ if (prevMethod == ReverseDebugMethod.HARDWARE) {
+ newMethod = ReverseDebugMethod.HARDWARE;
} else {
- traceMethod = ReverseTraceMethod.FULL_TRACE;
+ newMethod = ReverseDebugMethod.SOFTWARE;
}
} else {
- traceMethod = ReverseTraceMethod.STOP_TRACE;
+ newMethod = ReverseDebugMethod.OFF;
}
- ((IChangeReverseMethodHandler)fTargetAdapter).setTraceMethod(traceMethod);
+ ((IChangeReverseMethodHandler)fTargetAdapter).setReverseDebugMethod(newMethod);
}
}
super.execute(event);
@@ -269,24 +269,24 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
public void updateElement(UIElement element,
@SuppressWarnings("rawtypes") Map parameters) {
if (fTargetAdapter != null && fTargetAdapter instanceof IChangeReverseMethodHandler) {
- ReverseTraceMethod reverseMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext);
- ReverseTraceMethod LastTraceMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getLastTraceMethod(fActiveContext);
+ ReverseDebugMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getReverseDebugMethod(fActiveContext);
ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
try{
- if (reverseMethod == ReverseTraceMethod.HARDWARE_TRACE) {
+ if (currMethod == ReverseDebugMethod.HARDWARE) {
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseHardTrace"); //$NON-NLS-1$
element.setTooltip(Messages.ReverseDebugging_ToggleHardwareTrace);
element.setIcon(REVERSE_TOGGLE_HARDWARE_ON_IMAGE);
- } else if (reverseMethod == ReverseTraceMethod.FULL_TRACE) {
+ } else if (currMethod == ReverseDebugMethod.SOFTWARE) {
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseSoftTrace"); //$NON-NLS-1$
element.setTooltip(Messages.ReverseDebugging_ToggleSoftwareTrace);
element.setIcon(REVERSE_TOGGLE_SOFTWARE_ON_IMAGE);
} else {
- element.setTooltip(Messages.ReverseDebugging_ToggleReverseDebugging);
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "TraceOff"); //$NON-NLS-1$
- if (LastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
+ element.setTooltip(Messages.ReverseDebugging_ToggleReverseDebugging);
+ ReverseDebugMethod prevMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getPreviousReverseDebugMethod(fActiveContext);
+ if (prevMethod == ReverseDebugMethod.HARDWARE) {
element.setIcon(REVERSE_TOGGLE_HARDWARE_OFF_IMAGE);
- } else if (LastTraceMethod == ReverseTraceMethod.FULL_TRACE) {
+ } else if (prevMethod == ReverseDebugMethod.SOFTWARE) {
element.setIcon(REVERSE_TOGGLE_SOFTWARE_OFF_IMAGE);
} else {
element.setIcon(REVERSE_TOGGLE_DEFAULT_IMAGE);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java
index aea544bb683..d66b1b78cb0 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java
@@ -14,12 +14,16 @@ package org.eclipse.cdt.dsf.gdb.internal.ui.commands;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
+import org.eclipse.cdt.dsf.concurrent.ImmediateDataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Query;
+import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.debug.service.IRunControl;
@@ -59,17 +63,20 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
private final DsfServicesTracker fTracker;
private final DsfSession fSession;
- private ReverseTraceMethod fTraceMethod = null;
- private ReverseTraceMethod fLastTraceMethod = null;
- private ReverseTraceMethod fNextTraceMethod = null;
+ /** The reverse debugging method that was last returned by the service **/
+ private ReverseDebugMethod fCurrentMethod;
+ /** The reverse debugging method that was used before the new method was selected **/
+ private ReverseDebugMethod fPreviousMethod;
+ /** The reverse debugging method to be used when the toggle button is selected */
+ private ReverseDebugMethod fNextMethod;
public GdbReverseToggleCommand(DsfSession session) {
fExecutor = session.getExecutor();
fTracker = new DsfServicesTracker(GdbUIPlugin.getBundleContext(), session.getId());
fSession = session;
- fTraceMethod = ReverseTraceMethod.STOP_TRACE;
- fLastTraceMethod = ReverseTraceMethod.STOP_TRACE;
- fNextTraceMethod = ReverseTraceMethod.STOP_TRACE;
+ fCurrentMethod = ReverseDebugMethod.OFF;
+ fPreviousMethod = ReverseDebugMethod.OFF;
+ fNextMethod = ReverseDebugMethod.OFF;
try {
fExecutor.execute(new DsfRunnable() {
@@ -113,21 +120,23 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
final IReverseRunControl2 runControl = fTracker.getService(IReverseRunControl2.class);
if (runControl != null) {
- ReverseTraceMethod traceMethod = fNextTraceMethod;
- if (fNextTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
+ final ReverseDebugMethod newMethod;
+ if (fNextMethod == ReverseDebugMethod.HARDWARE) {
String defaultValue = Platform.getPreferencesService().getString(GdbPlugin.PLUGIN_ID,
IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_HARDWARE,
IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_GDB_TRACE, null);
if (defaultValue.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_BRANCH_TRACE)) {
- traceMethod = ReverseTraceMethod.BRANCH_TRACE; // Branch Trace
+ newMethod = ReverseDebugMethod.BRANCH_TRACE;
} else if (defaultValue.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_PROCESSOR_TRACE)) {
- traceMethod = ReverseTraceMethod.PROCESSOR_TRACE; // Processor Trace
+ newMethod = ReverseDebugMethod.PROCESSOR_TRACE;
} else {
- traceMethod = ReverseTraceMethod.GDB_TRACE; // GDB Selected Option
+ newMethod = ReverseDebugMethod.GDB_TRACE;
}
+ } else {
+ newMethod = fNextMethod;
}
- runControl.enableReverseMode(controlDmc, traceMethod, new DataRequestMonitor<Boolean>(fExecutor, rm) {
+ runControl.enableReverseMode(controlDmc, newMethod, new RequestMonitor(fExecutor, rm) {
@Override
public void handleError() {
// Call the parent function
@@ -137,16 +146,21 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
// avoid the default dialog box from eclipse and we propagate the error
// with the plugin specific code of 1, here the ReverseToggleCommandHandler
// interprets it as, the selected trace method is not available
- request.setStatus(new Status(IStatus.OK, GdbPlugin.PLUGIN_ID, 1, Messages.GdbReverseDebugging_HardwareTracingNotAvailable, null));
+ if (newMethod == ReverseDebugMethod.PROCESSOR_TRACE) {
+ request.setStatus(new Status(IStatus.OK, GdbPlugin.PLUGIN_ID, 1, Messages.GdbReverseDebugging_ProcessorTraceReverseDebugNotAvailable, null));
+ } else if (newMethod == ReverseDebugMethod.BRANCH_TRACE || newMethod == ReverseDebugMethod.GDB_TRACE) {
+ request.setStatus(new Status(IStatus.OK, GdbPlugin.PLUGIN_ID, 1, Messages.GdbReverseDebugging_HardwareReverseDebugNotAvailable, null));
+ } else {
+ request.setStatus(new Status(IStatus.OK, GdbPlugin.PLUGIN_ID, 1, Messages.GdbReverseDebugging_ReverseDebugNotAvailable, null));
+ }
}
});
-
} else {
final IReverseRunControl runControl_old = fTracker.getService(IReverseRunControl.class);
if (runControl_old != null) {
- if (fTraceMethod != ReverseTraceMethod.STOP_TRACE && fTraceMethod != ReverseTraceMethod.FULL_TRACE) {
+ if (fCurrentMethod != ReverseDebugMethod.OFF && fCurrentMethod != ReverseDebugMethod.SOFTWARE) {
runControl_old.enableReverseMode(controlDmc, false, rm); // Switch Off tracing
- request.setStatus(new Status(IStatus.OK, GdbPlugin.PLUGIN_ID, 1, Messages.GdbReverseDebugging_HardwareTracingNotAvailable, null));
+ request.setStatus(new Status(IStatus.OK, GdbPlugin.PLUGIN_ID, 1, Messages.GdbReverseDebugging_HardwareReverseDebugNotAvailable, null));
return;
}
runControl_old.isReverseModeEnabled(controlDmc, new DataRequestMonitor<Boolean>(fExecutor, rm) {
@@ -302,12 +316,12 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
}
@Override
- public void setTraceMethod(ReverseTraceMethod traceMethod) {
- fNextTraceMethod = traceMethod;
+ public void setReverseDebugMethod(ReverseDebugMethod traceMethod) {
+ fNextMethod = traceMethod;
}
@Override
- public ReverseTraceMethod getTraceMethod(final Object context) {
+ public ReverseDebugMethod getReverseDebugMethod(final Object context) {
IDMContext dmc;
if (context instanceof IDMContext) {
@@ -315,52 +329,74 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
} else if (context instanceof IDMVMContext) {
dmc = ((IDMVMContext)context).getDMContext();
} else {
- return ReverseTraceMethod.STOP_TRACE;
+ return ReverseDebugMethod.OFF;
}
final ICommandControlDMContext controlDmc = DMContexts.getAncestorOfType(dmc, ICommandControlDMContext.class);
if (controlDmc == null) {
- return ReverseTraceMethod.STOP_TRACE;
+ return ReverseDebugMethod.OFF;
}
- Query<ReverseTraceMethod> ReverseMethodQuery = new Query<ReverseTraceMethod>() {
- @Override
- public void execute(final DataRequestMonitor<ReverseTraceMethod> rm) {
- final IReverseRunControl2 runControl = fTracker.getService(IReverseRunControl2.class);
- if (runControl != null) {
- runControl.getReverseTraceMethod(controlDmc, rm);
- }
- else {
- rm.setData(ReverseTraceMethod.INVALID);
- rm.done();
- }
- }
- };
- try {
- fExecutor.execute(ReverseMethodQuery);
- ReverseTraceMethod returnedTrace = ReverseMethodQuery.get();
- ReverseTraceMethod currTrace = ReverseTraceMethod.INVALID;
- if (returnedTrace == ReverseTraceMethod.INVALID)
- currTrace = isReverseToggled(context) ? ReverseTraceMethod.FULL_TRACE : ReverseTraceMethod.STOP_TRACE ;
- else
- currTrace = (returnedTrace == ReverseTraceMethod.BRANCH_TRACE ||
- returnedTrace == ReverseTraceMethod.PROCESSOR_TRACE ||
- returnedTrace == ReverseTraceMethod.GDB_TRACE ) ? ReverseTraceMethod.HARDWARE_TRACE : returnedTrace;
- if (currTrace != fTraceMethod) {
- fLastTraceMethod = fTraceMethod;
- fTraceMethod = currTrace;
- }
- return fTraceMethod;
- } catch (InterruptedException e) {
- } catch (ExecutionException e) {
- } catch (RejectedExecutionException e) {
- }
+ Query<ReverseDebugMethod> reverseMethodQuery = new Query<ReverseDebugMethod>() {
+ @Override
+ public void execute(DataRequestMonitor<ReverseDebugMethod> rm) {
+ IReverseRunControl2 runControl = fTracker.getService(IReverseRunControl2.class);
+ if (runControl != null) {
+ runControl.getReverseTraceMethod(controlDmc, new ImmediateDataRequestMonitor<ReverseDebugMethod>(rm) {
+ @Override
+ protected void handleCompleted() {
+ if (!isSuccess()) {
+ rm.done(ReverseDebugMethod.OFF);
+ } else {
+ ReverseDebugMethod method = getData();
+ if (method == ReverseDebugMethod.BRANCH_TRACE ||
+ method == ReverseDebugMethod.PROCESSOR_TRACE ||
+ method == ReverseDebugMethod.GDB_TRACE) {
+ method = ReverseDebugMethod.HARDWARE;
+ }
+ rm.done(method);
+ }
+ }
+ });
+ } else {
+ IReverseRunControl runControl_old = fTracker.getService(IReverseRunControl.class);
+ if (runControl_old != null) {
+ runControl_old.isReverseModeEnabled(controlDmc, new ImmediateDataRequestMonitor<Boolean>(rm) {
+ @Override
+ protected void handleCompleted() {
+ if (isSuccess() && getData()) {
+ rm.done(ReverseDebugMethod.SOFTWARE);
+ } else {
+ rm.done(ReverseDebugMethod.OFF);
+ }
+ }
+ });
+ } else {
+ rm.done(ReverseDebugMethod.OFF);
+ }
+ }
+ }
+ };
+ try {
+ fExecutor.execute(reverseMethodQuery);
+ ReverseDebugMethod currMethod = reverseMethodQuery.get(500, TimeUnit.MILLISECONDS);
+
+ if (currMethod != fCurrentMethod) {
+ fPreviousMethod = fCurrentMethod;
+ fCurrentMethod = currMethod;
+ }
+ return fCurrentMethod;
+ } catch (InterruptedException e) {
+ } catch (ExecutionException e) {
+ } catch (RejectedExecutionException e) {
+ } catch (TimeoutException e) {
+ }
- return ReverseTraceMethod.STOP_TRACE;
+ return ReverseDebugMethod.OFF;
}
@Override
- public ReverseTraceMethod getLastTraceMethod(Object context) {
- return fLastTraceMethod;
+ public ReverseDebugMethod getPreviousReverseDebugMethod(Object context) {
+ return fPreviousMethod;
}
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.java
index c42aeb84794..10c6c33c26a 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.java
@@ -49,7 +49,11 @@ public class Messages extends NLS {
public static String GdbDebugNewExecutableCommand_Select_binary_and_specify_arguments;
- public static String GdbReverseDebugging_HardwareTracingNotAvailable;
+ public static String GdbReverseDebugging_HardwareReverseDebugNotAvailable;
+
+ public static String GdbReverseDebugging_ProcessorTraceReverseDebugNotAvailable;
+
+ public static String GdbReverseDebugging_ReverseDebugNotAvailable;
public static String GdbConnectCommand_Error;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.properties
index 8e5863a32da..f20b56518d4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.properties
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/Messages.properties
@@ -27,7 +27,8 @@ GdbDebugNewExecutableCommand_Select_binaries_on_host_and_target=Select binaries
GdbDebugNewExecutableCommand_Select_Binary=Select Binary
GdbDebugNewExecutableCommand_Select_binary_and_specify_arguments=Select a binary and specify the arguments
-GdbReverseDebugging_HardwareTracingNotAvailable=Hardware Tracing Method not available, Reverse debugging is switched Off, please select another method
-
+GdbReverseDebugging_HardwareReverseDebugNotAvailable=Hardware reverse debugging not available. Reverse debugging has been turned off. Please select software reverse debugging explicitly.
+GdbReverseDebugging_ProcessorTraceReverseDebugNotAvailable=Hardware reverse debugging based on Processor Trace not available. Reverse debugging has been turned off. Please select software reverse debugging or go to the Reverse Debugging preference page to try another type of hardware reverse debugging.
+GdbReverseDebugging_ReverseDebugNotAvailable=Unable to toggle reverse debugging.
GdbConnectCommand_FailureMessage=Failure to attach to process:
GdbConnectCommand_Error=Error: \ No newline at end of file
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_10.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_10.java
index bf962d92019..8ac149bace0 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_10.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_10.java
@@ -12,7 +12,7 @@ package org.eclipse.cdt.dsf.gdb.service;
import java.util.Map;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
@@ -61,18 +61,18 @@ public class GDBProcesses_7_10 extends GDBProcesses_7_4 {
launch.getLaunchConfiguration().getAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REVERSE_MODE,
IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_DEFAULT);
if (reverseMode.equals(IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_SOFTWARE)) {
- reverseService.enableReverseMode(controlContext, ReverseTraceMethod.FULL_TRACE, rm);
+ reverseService.enableReverseMode(controlContext, ReverseDebugMethod.SOFTWARE, rm);
}
else if (reverseMode.equals(IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_HARDWARE)) {
String defaultValue = Platform.getPreferencesService().getString(GdbPlugin.PLUGIN_ID,
IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_HARDWARE,
IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_GDB_TRACE, null);
- ReverseTraceMethod traceMethod = ReverseTraceMethod.GDB_TRACE;
+ ReverseDebugMethod traceMethod = ReverseDebugMethod.GDB_TRACE;
if (defaultValue.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_BRANCH_TRACE)) {
- traceMethod = ReverseTraceMethod.BRANCH_TRACE;
+ traceMethod = ReverseDebugMethod.BRANCH_TRACE;
} else if (defaultValue.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_PROCESSOR_TRACE)) {
- traceMethod = ReverseTraceMethod.PROCESSOR_TRACE;
+ traceMethod = ReverseDebugMethod.PROCESSOR_TRACE;
}
reverseService.enableReverseMode(controlContext, traceMethod, rm);
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_10.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_10.java
index 6edaf21723a..f8c83128efd 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_10.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_10.java
@@ -12,7 +12,7 @@ package org.eclipse.cdt.dsf.gdb.service;
import java.util.Hashtable;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.ImmediateRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
@@ -35,7 +35,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
private IMICommandControl fCommandControl;
private CommandFactory fCommandFactory;
- private ReverseTraceMethod fReverseTraceMethod; // default: no trace
+ private ReverseDebugMethod fReverseTraceMethod; // default: no trace
public GDBRunControl_7_10(DsfSession session) {
super(session);
@@ -56,7 +56,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
fCommandControl = getServicesTracker().getService(IMICommandControl.class);
fCommandFactory = fCommandControl.getCommandFactory();
- fReverseTraceMethod = ReverseTraceMethod.STOP_TRACE;
+ fReverseTraceMethod = ReverseDebugMethod.OFF;
if (fCommandControl == null) {
requestMonitor.done(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, "Service is not available")); //$NON-NLS-1$
@@ -72,13 +72,13 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
}
@Override
- public void getReverseTraceMethod(ICommandControlDMContext context, DataRequestMonitor<ReverseTraceMethod> rm) {
+ public void getReverseTraceMethod(ICommandControlDMContext context, DataRequestMonitor<ReverseDebugMethod> rm) {
rm.setData(fReverseTraceMethod);
rm.done();
}
@Override
- public void enableReverseMode(final ICommandControlDMContext context,final ReverseTraceMethod traceMethod, final RequestMonitor rm) {
+ public void enableReverseMode(final ICommandControlDMContext context,final ReverseDebugMethod traceMethod, final RequestMonitor rm) {
if (!getReverseSupported()) {
rm.done(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, NOT_SUPPORTED, "Reverse mode is not supported.", null)); //$NON-NLS-1$
return;
@@ -89,7 +89,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
return;
}
- if (fReverseTraceMethod == ReverseTraceMethod.STOP_TRACE || traceMethod == ReverseTraceMethod.STOP_TRACE) {
+ if (fReverseTraceMethod == ReverseDebugMethod.OFF || traceMethod == ReverseDebugMethod.OFF) {
getConnection().queueCommand(
fCommandFactory.createCLIRecord(context, traceMethod),
new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@@ -97,7 +97,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
public void handleSuccess() {
boolean enabled = false;
fReverseTraceMethod = traceMethod;
- if (fReverseTraceMethod != ReverseTraceMethod.STOP_TRACE) {
+ if (fReverseTraceMethod != ReverseDebugMethod.OFF) {
enabled = true;
}
setReverseModeEnabled(enabled );
@@ -112,7 +112,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
}
getConnection().queueCommand(
- fCommandFactory.createCLIRecord(context, ReverseTraceMethod.STOP_TRACE),
+ fCommandFactory.createCLIRecord(context, ReverseDebugMethod.OFF),
new DataRequestMonitor<MIInfo>(getExecutor(), rm) {
@Override
public void handleSuccess() {
@@ -130,7 +130,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
public void handleFailure() {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, INVALID_STATE, "Trace method could not be selected", null)); //$NON-NLS-1$
setReverseModeEnabled(false);
- fReverseTraceMethod = ReverseTraceMethod.STOP_TRACE;
+ fReverseTraceMethod = ReverseDebugMethod.OFF;
rm.done();
}
});
@@ -151,7 +151,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
if ("record-started".equals(asyncClass) || //$NON-NLS-1$
"record-stopped".equals(asyncClass)) { //$NON-NLS-1$
if ("record-stopped".equals(asyncClass)) { //$NON-NLS-1$
- fReverseTraceMethod = ReverseTraceMethod.STOP_TRACE;
+ fReverseTraceMethod = ReverseDebugMethod.OFF;
setReverseModeEnabled(false);
} else {
getConnection().queueCommand(
@@ -163,7 +163,7 @@ public class GDBRunControl_7_10 extends GDBRunControl_7_6 implements IReverseRun
fReverseTraceMethod = getData().getReverseMethod();
} else {
// Use a default value in case of error
- fReverseTraceMethod = ReverseTraceMethod.FULL_TRACE;
+ fReverseTraceMethod = ReverseDebugMethod.SOFTWARE;
}
setReverseModeEnabled(true);
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IReverseRunControl2.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IReverseRunControl2.java
index 647ab0bb9bf..f8219bca844 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IReverseRunControl2.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/IReverseRunControl2.java
@@ -10,25 +10,21 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
/** @since 5.0 */
public interface IReverseRunControl2 extends IReverseRunControl {
/**
- * Get the reverse debugging trace method.
- *
- * @param rm Will contain the result of the operation, true or false, not null.
+ * Get the reverse debugging method.
*/
- void getReverseTraceMethod(ICommandControlDMContext context, DataRequestMonitor<ReverseTraceMethod> rm);
+ void getReverseTraceMethod(ICommandControlDMContext context, DataRequestMonitor<ReverseDebugMethod> rm);
/**
- * Change reverse debugging trace method based on the method parameter.
- *
- * @param set the reverse debugging trace method to Full Trace, Branch Trace or Processor Trace
+ * Change reverse debugging method based on the method parameter.
*/
- void enableReverseMode(ICommandControlDMContext context, ReverseTraceMethod traceMethod, RequestMonitor rm);
+ void enableReverseMode(ICommandControlDMContext context, ReverseDebugMethod traceMethod, RequestMonitor rm);
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java
index aedfbff1f77..e094169c1f4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java
@@ -16,7 +16,7 @@ import java.util.List;
import java.util.Map;
import org.eclipse.cdt.debug.core.CDebugUtils;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
@@ -39,7 +39,7 @@ public class StartOrRestartProcessSequence_7_10 extends StartOrRestartProcessSeq
private IGDBControl fCommandControl;
private IReverseRunControl2 fReverseService;
- private ReverseTraceMethod fReverseMode = ReverseTraceMethod.FULL_TRACE;
+ private ReverseDebugMethod fReverseMode = ReverseDebugMethod.SOFTWARE;
private final Map<String, Object> fAttributes;
public StartOrRestartProcessSequence_7_10(DsfExecutor executor, IContainerDMContext containerDmc,
@@ -94,14 +94,14 @@ public class StartOrRestartProcessSequence_7_10 extends StartOrRestartProcessSeq
IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_GDB_TRACE, null);
if (hwTracePref.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_BRANCH_TRACE)) {
- fReverseMode = ReverseTraceMethod.BRANCH_TRACE;
+ fReverseMode = ReverseDebugMethod.BRANCH_TRACE;
} else if (hwTracePref.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_PROCESSOR_TRACE)) {
- fReverseMode = ReverseTraceMethod.PROCESSOR_TRACE;
+ fReverseMode = ReverseDebugMethod.PROCESSOR_TRACE;
} else {
- fReverseMode = ReverseTraceMethod.GDB_TRACE;
+ fReverseMode = ReverseDebugMethod.GDB_TRACE;
}
} else if (reverseMode.equals(IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_SOFTWARE)) {
- fReverseMode = ReverseTraceMethod.FULL_TRACE;
+ fReverseMode = ReverseDebugMethod.SOFTWARE;
} else {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, IDsfStatusConstants.INTERNAL_ERROR, "Unexpected reverse debugging type: " + reverseMode, null)); //$NON-NLS-1$
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java
index d32e1e325ad..16eb5565225 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java
@@ -243,7 +243,7 @@ import org.eclipse.cdt.dsf.mi.service.command.output.MIVarShowAttributesInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIVarShowFormatInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.MIVarUpdateInfo;
import org.eclipse.cdt.dsf.mi.service.command.output.CLIInfoRecordInfo;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
/**
* Factory to create MI/CLI commands.
@@ -329,7 +329,7 @@ public class CommandFactory {
}
/** @since 5.0*/
- public ICommand<MIInfo> createCLIRecord(ICommandControlDMContext ctx, ReverseTraceMethod traceMethod) {
+ public ICommand<MIInfo> createCLIRecord(ICommandControlDMContext ctx, ReverseDebugMethod traceMethod) {
return new CLIRecord(ctx, traceMethod);
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIRecord.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIRecord.java
index 334704217bd..d446ea5a2a6 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIRecord.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/CLIRecord.java
@@ -13,7 +13,7 @@ package org.eclipse.cdt.dsf.mi.service.command.commands;
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
/**
* This command turns on on off the recording of "Process Record and Replay".
@@ -28,23 +28,23 @@ public class CLIRecord extends CLICommand<MIInfo> {
/** Only available for GDB >= 7.10 */
/** @since 5.0 */
- public CLIRecord(ICommandControlDMContext ctx, ReverseTraceMethod traceMethod) {
+ public CLIRecord(ICommandControlDMContext ctx, ReverseDebugMethod traceMethod) {
super(ctx, "record" + createRecordParams(traceMethod)); //$NON-NLS-1$
}
- private static String createRecordParams(ReverseTraceMethod traceMethod)
+ private static String createRecordParams(ReverseDebugMethod traceMethod)
{
String recordParam;
- if (traceMethod == ReverseTraceMethod.STOP_TRACE) {
+ if (traceMethod == ReverseDebugMethod.OFF) {
recordParam = " stop"; //$NON-NLS-1$
- } else if (traceMethod == ReverseTraceMethod.FULL_TRACE) {
+ } else if (traceMethod == ReverseDebugMethod.SOFTWARE) {
recordParam = " full"; //$NON-NLS-1$
- } else if (traceMethod == ReverseTraceMethod.BRANCH_TRACE) {
+ } else if (traceMethod == ReverseDebugMethod.BRANCH_TRACE) {
recordParam = " btrace bts"; //$NON-NLS-1$
- } else if (traceMethod == ReverseTraceMethod.PROCESSOR_TRACE) {
+ } else if (traceMethod == ReverseDebugMethod.PROCESSOR_TRACE) {
recordParam = " btrace pt"; //$NON-NLS-1$
- } else if (traceMethod == ReverseTraceMethod.GDB_TRACE) {
+ } else if (traceMethod == ReverseDebugMethod.GDB_TRACE) {
recordParam = " btrace"; //$NON-NLS-1$
} else {// no trace method defined
recordParam = ""; //$NON-NLS-1$
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/CLIInfoRecordInfo.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/CLIInfoRecordInfo.java
index a223ebd166f..098eb146826 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/CLIInfoRecordInfo.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/CLIInfoRecordInfo.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.mi.service.command.output;
-import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTraceMethod;
+import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
/**
* 'info record' returns the selected reverse trace method.
@@ -28,7 +28,7 @@ import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseTrace
public class CLIInfoRecordInfo extends MIInfo {
- private ReverseTraceMethod fReverseMethod;
+ private ReverseDebugMethod fReverseMethod;
public CLIInfoRecordInfo(MIOutput record) {
super(record);
@@ -52,17 +52,17 @@ public class CLIInfoRecordInfo extends MIInfo {
protected void parseReverseMethod(String output) {
if (output.contains("Processor")) { //$NON-NLS-1$
- fReverseMethod = ReverseTraceMethod.PROCESSOR_TRACE;
+ fReverseMethod = ReverseDebugMethod.PROCESSOR_TRACE;
} else if (output.contains("Branch")) { //$NON-NLS-1$
- fReverseMethod = ReverseTraceMethod.BRANCH_TRACE;
+ fReverseMethod = ReverseDebugMethod.BRANCH_TRACE;
} else if (output.contains("full")) { //$NON-NLS-1$
- fReverseMethod = ReverseTraceMethod.FULL_TRACE;
+ fReverseMethod = ReverseDebugMethod.SOFTWARE;
} else {
- fReverseMethod = ReverseTraceMethod.STOP_TRACE;
+ fReverseMethod = ReverseDebugMethod.OFF;
}
}
- public ReverseTraceMethod getReverseMethod() {
+ public ReverseDebugMethod getReverseMethod() {
return fReverseMethod;
}
}

Back to the top