1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-22 14:12:10 +02:00

Bug 478740: Add Switch off tracing option

This patch adds the "Switch Off Tracing" option to 
the select reverse debugging method pull down menu.

Change-Id: Ib184c1f4c1d1db781bea4468bc8c939bd27db27d
Signed-off-by: raddepal <ravitheja.addepally@intel.com>
This commit is contained in:
raddepal 2016-02-24 11:51:49 -05:00 committed by Gerrit Code Review @ Eclipse.org
parent 79e0972413
commit 3be258d79b
4 changed files with 79 additions and 63 deletions

View file

@ -1,5 +1,5 @@
###############################################################################
# Copyright (c) 2000, 2015 QNX Software Systems and others.
# Copyright (c) 2000, 2016 QNX Software Systems 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
@ -227,12 +227,14 @@ Uncall.label = Uncall
ChangeTraceMethod.name = Set Reverse Debugging Trace Method
ChangeTraceMethod.description = Set Reverse Debugging Trace Method
ChangeTraceMethod.label = Set Reverse Debugging Trace Method
SoftwareTrace.name = Use Software Trace
SoftwareTrace.description = Use Software Trace for Reverse Debugging. Slow, but detailed reverse debugging method.
SoftwareTrace.label = Use Software Trace
HardwareTrace.name = Use Hardware Trace
HardwareTrace.description = Use Hardware Trace for Reverse Debugging. Fast, but less detailed reverse debugging method.
HardwareTrace.label = Use Hardware Trace
SoftwareTrace.name = Enable Software Trace Method
SoftwareTrace.description = Enable Software Trace Method for Reverse Debugging. Slow, but detailed reverse debugging method.
SoftwareTrace.label = Enable Software Trace Method
HardwareTrace.name = Enable Hardware Trace Method
HardwareTrace.description = Enable Hardware Trace Method for Reverse Debugging. Fast, but less detailed reverse debugging method.
HardwareTrace.label = Enable Hardware Trace Method
ReverseDisable.label = Disable Reverse Debugging
ReverseDisable.description = Disable Reverse Debugging
# Connect command
Connect.name = Connect

View file

@ -2337,7 +2337,7 @@
<extension
point="org.eclipse.ui.menus">
<!-- Register Grouping contributions to the registers view popup -->
<!-- Register Grouping contributions to the registers view popup -->
<menuContribution
locationURI="popup:org.eclipse.debug.ui.RegisterView?after=additions">
<command
@ -2385,6 +2385,7 @@
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif"
id="org.eclipse.cdt.debug.ui.reverseToggle.menu"
label="%ReverseToggle.label"
style="pulldown">
<visibleWhen checkEnabled="false">
@ -2459,11 +2460,11 @@
<!-- Reverse debugging contributions to Run menu -->
<menuContribution
locationURI="menu:org.eclipse.ui.run?before=stepGroup">
<menu
<menu
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif"
label="%ReverseToggle.label"
style="pulldown">
id="org.eclipse.cdt.debug.ui.reverseToggle.menu"
label="%ReverseToggle.label">
<visibleWhen checkEnabled="false">
<reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/>
</visibleWhen>
@ -2524,11 +2525,22 @@
<menu
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif"
label="%ReverseToggle.label"
style="pulldown">
label="%ReverseToggle.label">
<visibleWhen checkEnabled="false">
<reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/>
</visibleWhen>
<!-- It does not seem we can re-use the reverse toggle menu here -->
<!-- so we re-define it. -->
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%ReverseDisable.label"
tooltip="%ReverseDisable.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="TraceOff">
</parameter>
</command>
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%SoftwareTrace.label"
@ -2629,56 +2641,14 @@
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif"
id="org.eclipse.cdt.debug.ui.reverseToggle.menu"
label="%ReverseToggle.label"
style="pulldown">
<visibleWhen checkEnabled="false">
<reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/>
</visibleWhen>
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%SoftwareTrace.label"
tooltip="%SoftwareTrace.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="UseSoftTrace">
</parameter>
</command>
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%HardwareTrace.label"
tooltip="%HardwareTrace.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="UseHardTrace">
</parameter>
</command>
</command>
</menuContribution>
<menuContribution
locationURI="menu:org.eclipse.cdt.debug.ui.command.reverseToggle">
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%SoftwareTrace.label"
tooltip="%SoftwareTrace.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="UseSoftTrace">
</parameter>
</command>
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%HardwareTrace.label"
tooltip="%HardwareTrace.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="UseHardTrace">
</parameter>
</command>
</menuContribution>
<menuContribution
locationURI="toolbar:org.eclipse.debug.ui.main.toolbar?before=threadGroup">
<command
@ -2728,6 +2698,44 @@
</command>
</menuContribution>
<!-- List of menu items for the reverse toggle menu -->
<!-- Note that we re-use this list in the different locations where -->
<!-- the reverse toggle is present. We achieve this by using the same -->
<!-- id for each of these reverse toggle 'menus' -->
<menuContribution
locationURI="menu:org.eclipse.cdt.debug.ui.reverseToggle.menu">
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%ReverseDisable.label"
tooltip="%ReverseDisable.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="TraceOff">
</parameter>
</command>
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%SoftwareTrace.label"
tooltip="%SoftwareTrace.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="UseSoftTrace">
</parameter>
</command>
<command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%HardwareTrace.label"
tooltip="%HardwareTrace.description"
style="radio">
<parameter
name="org.eclipse.ui.commands.radioStateParameter"
value="UseHardTrace">
</parameter>
</command>
</menuContribution>
<!-- Group context contributions to Debug view toolbar -->
<menuContribution
locationURI="popup:org.eclipse.debug.ui.DebugView?after=emptyStepGroup">

View file

@ -184,6 +184,8 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
if (radioState.equals("UseSoftTrace")) { //$NON-NLS-1$
traceMethod = ReverseTraceMethod.FULL_TRACE;
} else if (radioState.equals("TraceOff")) { //$NON-NLS-1$
traceMethod = ReverseTraceMethod.STOP_TRACE;
} else if (radioState.equals("UseHardTrace")) { //$NON-NLS-1$
traceMethod = ReverseTraceMethod.HARDWARE_TRACE;
} else {
@ -193,6 +195,9 @@ 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)
return null;
((IChangeReverseMethodHandler)fTargetAdapter).setTraceMethod(traceMethod);
}
@ -209,7 +214,7 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
if (fTargetAdapter.toggleNeedsUpdating()) {
ReverseTraceMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext);
if (currMethod == ReverseTraceMethod.STOP_TRACE) {
if (fLastTraceMethod != ReverseTraceMethod.STOP_TRACE && fLastTraceMethod != ReverseTraceMethod.FULL_TRACE) {
if (fLastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
traceMethod = ReverseTraceMethod.HARDWARE_TRACE;
} else {
traceMethod = ReverseTraceMethod.FULL_TRACE;
@ -279,7 +284,7 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
fTraceMethod = reverseMethod;
}
try{
if (fTraceMethod != ReverseTraceMethod.STOP_TRACE && fTraceMethod != ReverseTraceMethod.FULL_TRACE) {
if (fTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseHardTrace"); //$NON-NLS-1$
element.setTooltip(Messages.ReverseDebugging_ToggleHardwareTrace);
element.setIcon(fTracemethodOnImages[1]);
@ -289,11 +294,10 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
element.setIcon(fTracemethodOnImages[0]);
} else {
element.setTooltip(Messages.ReverseDebugging_ToggleReverseDebugging);
if (fLastTraceMethod != ReverseTraceMethod.STOP_TRACE && fLastTraceMethod != ReverseTraceMethod.FULL_TRACE) {
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseHardTrace"); //$NON-NLS-1$
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "TraceOff"); //$NON-NLS-1$
if (fLastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
element.setIcon(fTracemethodOffImages[1]);
} else if (fLastTraceMethod == ReverseTraceMethod.FULL_TRACE) {
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseSoftTrace"); //$NON-NLS-1$
element.setIcon(fTracemethodOffImages[0]);
} else {
element.setIcon(fTracemethodDefaultImage);

View file

@ -340,7 +340,9 @@ public class GdbReverseToggleCommand extends AbstractDebugCommand implements ICh
if (returnedTrace == ReverseTraceMethod.INVALID)
return isReverseToggled(context) ? ReverseTraceMethod.FULL_TRACE : ReverseTraceMethod.STOP_TRACE ;
else
return returnedTrace;
return (returnedTrace == ReverseTraceMethod.BRANCH_TRACE ||
returnedTrace == ReverseTraceMethod.PROCESSOR_TRACE ||
returnedTrace == ReverseTraceMethod.GDB_TRACE ) ? ReverseTraceMethod.HARDWARE_TRACE : returnedTrace;
} catch (InterruptedException e) {
} catch (ExecutionException e) {
} catch (RejectedExecutionException e) {