Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorraddepal2016-03-03 12:21:00 +0000
committerMarc Khouzam2016-03-23 13:56:19 +0000
commit7a73b0035f03d018ce7aa90f10a143bdb3ad38b8 (patch)
tree80f2a812903fc4756e0b40142af3606a79be663f
parent16b3fbcfd655c5efce75b24714402beae7c0465e (diff)
downloadorg.eclipse.cdt-7a73b0035f03d018ce7aa90f10a143bdb3ad38b8.tar.gz
org.eclipse.cdt-7a73b0035f03d018ce7aa90f10a143bdb3ad38b8.tar.xz
org.eclipse.cdt-7a73b0035f03d018ce7aa90f10a143bdb3ad38b8.zip
Bug 488661 - Moving the last trace method to GdbReverseToggleCommand
This patch solves Bug 488661 by moving last trace method to GdbReverseToggleCommand. Since it is instantiated on a per session basis. Change-Id: Idafa196c7af36373ca08d5fc7de63024fe824c2b Signed-off-by: raddepal <ravitheja.addepally@intel.com>
-rw-r--r--debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IChangeReverseMethodHandler.java2
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java20
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/commands/GdbReverseToggleCommand.java28
3 files changed, 31 insertions, 19 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 c24f3ec3169..63036bee9bf 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
@@ -29,4 +29,6 @@ public interface IChangeReverseMethodHandler extends IReverseToggleHandler, IDeb
*
*/
ReverseTraceMethod getTraceMethod(Object context);
+
+ ReverseTraceMethod getLastTraceMethod(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 b825befa576..4be744d5d77 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
@@ -56,8 +56,6 @@ import org.osgi.framework.Bundle;
* @since 7.0
*/
public class ReverseToggleCommandHandler extends DebugCommandHandler implements IDebugContextListener, IElementUpdater {
- private ReverseTraceMethod fTraceMethod;
- private ReverseTraceMethod fLastTraceMethod;
private static final ImageDescriptor REVERSE_TOGGLE_DEFAULT_IMAGE = getImageDescriptor("icons/obj16/reverse_toggle.gif"); //$NON-NLS-1$
private static final ImageDescriptor REVERSE_TOGGLE_SOFTWARE_ON_IMAGE = getImageDescriptor("icons/obj16/reverse_toggle_sw_on.png"); //$NON-NLS-1$
@@ -109,8 +107,6 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
// This can happen if we activate the action set after the launch.
refresh(fContextService.getActiveContext());
- fTraceMethod = ReverseTraceMethod.STOP_TRACE;
- fLastTraceMethod = ReverseTraceMethod.STOP_TRACE;
}
}
}
@@ -207,9 +203,10 @@ 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 (fLastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
+ if (LastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
traceMethod = ReverseTraceMethod.HARDWARE_TRACE;
} else {
traceMethod = ReverseTraceMethod.FULL_TRACE;
@@ -273,26 +270,23 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
@SuppressWarnings("rawtypes") Map parameters) {
if (fTargetAdapter != null && fTargetAdapter instanceof IChangeReverseMethodHandler) {
ReverseTraceMethod reverseMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext);
+ ReverseTraceMethod LastTraceMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getLastTraceMethod(fActiveContext);
ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
- if (reverseMethod != fTraceMethod) {
- fLastTraceMethod = fTraceMethod;
- fTraceMethod = reverseMethod;
- }
try{
- if (fTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
+ if (reverseMethod == ReverseTraceMethod.HARDWARE_TRACE) {
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 (fTraceMethod == ReverseTraceMethod.FULL_TRACE) {
+ } else if (reverseMethod == ReverseTraceMethod.FULL_TRACE) {
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 (fLastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
+ if (LastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
element.setIcon(REVERSE_TOGGLE_HARDWARE_OFF_IMAGE);
- } else if (fLastTraceMethod == ReverseTraceMethod.FULL_TRACE) {
+ } else if (LastTraceMethod == ReverseTraceMethod.FULL_TRACE) {
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 66fc7f7d814..aea544bb683 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
@@ -60,12 +60,17 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
private final DsfSession fSession;
private ReverseTraceMethod fTraceMethod = null;
-
+ private ReverseTraceMethod fLastTraceMethod = null;
+ private ReverseTraceMethod fNextTraceMethod = null;
+
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;
+
try {
fExecutor.execute(new DsfRunnable() {
@Override
@@ -108,8 +113,8 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
final IReverseRunControl2 runControl = fTracker.getService(IReverseRunControl2.class);
if (runControl != null) {
- ReverseTraceMethod traceMethod = fTraceMethod;
- if (fTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
+ ReverseTraceMethod traceMethod = fNextTraceMethod;
+ if (fNextTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
String defaultValue = Platform.getPreferencesService().getString(GdbPlugin.PLUGIN_ID,
IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_HARDWARE,
IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_GDB_TRACE, null);
@@ -298,7 +303,7 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
@Override
public void setTraceMethod(ReverseTraceMethod traceMethod) {
- fTraceMethod = traceMethod;
+ fNextTraceMethod = traceMethod;
}
@Override
@@ -334,12 +339,18 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
try {
fExecutor.execute(ReverseMethodQuery);
ReverseTraceMethod returnedTrace = ReverseMethodQuery.get();
+ ReverseTraceMethod currTrace = ReverseTraceMethod.INVALID;
if (returnedTrace == ReverseTraceMethod.INVALID)
- return isReverseToggled(context) ? ReverseTraceMethod.FULL_TRACE : ReverseTraceMethod.STOP_TRACE ;
+ currTrace = isReverseToggled(context) ? ReverseTraceMethod.FULL_TRACE : ReverseTraceMethod.STOP_TRACE ;
else
- return (returnedTrace == ReverseTraceMethod.BRANCH_TRACE ||
+ 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) {
@@ -347,4 +358,9 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
return ReverseTraceMethod.STOP_TRACE;
}
+
+ @Override
+ public ReverseTraceMethod getLastTraceMethod(Object context) {
+ return fLastTraceMethod;
+ }
}

Back to the top