mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
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>
This commit is contained in:
parent
16b3fbcfd6
commit
7a73b0035f
3 changed files with 31 additions and 19 deletions
|
@ -29,4 +29,6 @@ public interface IChangeReverseMethodHandler extends IReverseToggleHandler, IDeb
|
|||
*
|
||||
*/
|
||||
ReverseTraceMethod getTraceMethod(Object context);
|
||||
|
||||
ReverseTraceMethod getLastTraceMethod(Object context);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue