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 # All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0 # are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at # which accompanies this distribution, and is available at
@ -227,12 +227,14 @@ Uncall.label = Uncall
ChangeTraceMethod.name = Set Reverse Debugging Trace Method ChangeTraceMethod.name = Set Reverse Debugging Trace Method
ChangeTraceMethod.description = Set Reverse Debugging Trace Method ChangeTraceMethod.description = Set Reverse Debugging Trace Method
ChangeTraceMethod.label = Set Reverse Debugging Trace Method ChangeTraceMethod.label = Set Reverse Debugging Trace Method
SoftwareTrace.name = Use Software Trace SoftwareTrace.name = Enable Software Trace Method
SoftwareTrace.description = Use Software Trace for Reverse Debugging. Slow, but detailed reverse debugging method. SoftwareTrace.description = Enable Software Trace Method for Reverse Debugging. Slow, but detailed reverse debugging method.
SoftwareTrace.label = Use Software Trace SoftwareTrace.label = Enable Software Trace Method
HardwareTrace.name = Use Hardware Trace HardwareTrace.name = Enable Hardware Trace Method
HardwareTrace.description = Use Hardware Trace for Reverse Debugging. Fast, but less detailed reverse debugging method. HardwareTrace.description = Enable Hardware Trace Method for Reverse Debugging. Fast, but less detailed reverse debugging method.
HardwareTrace.label = Use Hardware Trace HardwareTrace.label = Enable Hardware Trace Method
ReverseDisable.label = Disable Reverse Debugging
ReverseDisable.description = Disable Reverse Debugging
# Connect command # Connect command
Connect.name = Connect Connect.name = Connect

View file

@ -2337,7 +2337,7 @@
<extension <extension
point="org.eclipse.ui.menus"> point="org.eclipse.ui.menus">
<!-- Register Grouping contributions to the registers view popup --> <!-- Register Grouping contributions to the registers view popup -->
<menuContribution <menuContribution
locationURI="popup:org.eclipse.debug.ui.RegisterView?after=additions"> locationURI="popup:org.eclipse.debug.ui.RegisterView?after=additions">
<command <command
@ -2385,6 +2385,7 @@
<command <command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle" commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif" icon="icons/obj16/reverse_toggle.gif"
id="org.eclipse.cdt.debug.ui.reverseToggle.menu"
label="%ReverseToggle.label" label="%ReverseToggle.label"
style="pulldown"> style="pulldown">
<visibleWhen checkEnabled="false"> <visibleWhen checkEnabled="false">
@ -2459,11 +2460,11 @@
<!-- Reverse debugging contributions to Run menu --> <!-- Reverse debugging contributions to Run menu -->
<menuContribution <menuContribution
locationURI="menu:org.eclipse.ui.run?before=stepGroup"> locationURI="menu:org.eclipse.ui.run?before=stepGroup">
<menu <menu
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle" commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif" icon="icons/obj16/reverse_toggle.gif"
label="%ReverseToggle.label" id="org.eclipse.cdt.debug.ui.reverseToggle.menu"
style="pulldown"> label="%ReverseToggle.label">
<visibleWhen checkEnabled="false"> <visibleWhen checkEnabled="false">
<reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/> <reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/>
</visibleWhen> </visibleWhen>
@ -2524,11 +2525,22 @@
<menu <menu
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle" commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif" icon="icons/obj16/reverse_toggle.gif"
label="%ReverseToggle.label" label="%ReverseToggle.label">
style="pulldown">
<visibleWhen checkEnabled="false"> <visibleWhen checkEnabled="false">
<reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/> <reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/>
</visibleWhen> </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 <command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle" commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
label="%SoftwareTrace.label" label="%SoftwareTrace.label"
@ -2629,56 +2641,14 @@
<command <command
commandId="org.eclipse.cdt.debug.ui.command.reverseToggle" commandId="org.eclipse.cdt.debug.ui.command.reverseToggle"
icon="icons/obj16/reverse_toggle.gif" icon="icons/obj16/reverse_toggle.gif"
id="org.eclipse.cdt.debug.ui.reverseToggle.menu"
label="%ReverseToggle.label" label="%ReverseToggle.label"
style="pulldown"> style="pulldown">
<visibleWhen checkEnabled="false"> <visibleWhen checkEnabled="false">
<reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/> <reference definitionId="org.eclipse.cdt.debug.ui.testIsReverseDebuggingActionSetActive"/>
</visibleWhen> </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> </command>
</menuContribution> </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 <menuContribution
locationURI="toolbar:org.eclipse.debug.ui.main.toolbar?before=threadGroup"> locationURI="toolbar:org.eclipse.debug.ui.main.toolbar?before=threadGroup">
<command <command
@ -2728,6 +2698,44 @@
</command> </command>
</menuContribution> </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 --> <!-- Group context contributions to Debug view toolbar -->
<menuContribution <menuContribution
locationURI="popup:org.eclipse.debug.ui.DebugView?after=emptyStepGroup"> 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$ if (radioState.equals("UseSoftTrace")) { //$NON-NLS-1$
traceMethod = ReverseTraceMethod.FULL_TRACE; traceMethod = ReverseTraceMethod.FULL_TRACE;
} else if (radioState.equals("TraceOff")) { //$NON-NLS-1$
traceMethod = ReverseTraceMethod.STOP_TRACE;
} else if (radioState.equals("UseHardTrace")) { //$NON-NLS-1$ } else if (radioState.equals("UseHardTrace")) { //$NON-NLS-1$
traceMethod = ReverseTraceMethod.HARDWARE_TRACE; traceMethod = ReverseTraceMethod.HARDWARE_TRACE;
} else { } else {
@ -193,6 +195,9 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
// store the parameter in the gdb command handler class // store the parameter in the gdb command handler class
if (fTargetAdapter != null && fTargetAdapter instanceof IChangeReverseMethodHandler) { if (fTargetAdapter != null && fTargetAdapter instanceof IChangeReverseMethodHandler) {
ReverseTraceMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext);
if (currMethod == traceMethod)
return null;
((IChangeReverseMethodHandler)fTargetAdapter).setTraceMethod(traceMethod); ((IChangeReverseMethodHandler)fTargetAdapter).setTraceMethod(traceMethod);
} }
@ -209,7 +214,7 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
if (fTargetAdapter.toggleNeedsUpdating()) { if (fTargetAdapter.toggleNeedsUpdating()) {
ReverseTraceMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext); ReverseTraceMethod currMethod = ((IChangeReverseMethodHandler)fTargetAdapter).getTraceMethod(fActiveContext);
if (currMethod == ReverseTraceMethod.STOP_TRACE) { if (currMethod == ReverseTraceMethod.STOP_TRACE) {
if (fLastTraceMethod != ReverseTraceMethod.STOP_TRACE && fLastTraceMethod != ReverseTraceMethod.FULL_TRACE) { if (fLastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
traceMethod = ReverseTraceMethod.HARDWARE_TRACE; traceMethod = ReverseTraceMethod.HARDWARE_TRACE;
} else { } else {
traceMethod = ReverseTraceMethod.FULL_TRACE; traceMethod = ReverseTraceMethod.FULL_TRACE;
@ -279,7 +284,7 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
fTraceMethod = reverseMethod; fTraceMethod = reverseMethod;
} }
try{ 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$ HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseHardTrace"); //$NON-NLS-1$
element.setTooltip(Messages.ReverseDebugging_ToggleHardwareTrace); element.setTooltip(Messages.ReverseDebugging_ToggleHardwareTrace);
element.setIcon(fTracemethodOnImages[1]); element.setIcon(fTracemethodOnImages[1]);
@ -289,11 +294,10 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
element.setIcon(fTracemethodOnImages[0]); element.setIcon(fTracemethodOnImages[0]);
} else { } else {
element.setTooltip(Messages.ReverseDebugging_ToggleReverseDebugging); element.setTooltip(Messages.ReverseDebugging_ToggleReverseDebugging);
if (fLastTraceMethod != ReverseTraceMethod.STOP_TRACE && fLastTraceMethod != ReverseTraceMethod.FULL_TRACE) { HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "TraceOff"); //$NON-NLS-1$
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseHardTrace"); //$NON-NLS-1$ if (fLastTraceMethod == ReverseTraceMethod.HARDWARE_TRACE) {
element.setIcon(fTracemethodOffImages[1]); element.setIcon(fTracemethodOffImages[1]);
} else if (fLastTraceMethod == ReverseTraceMethod.FULL_TRACE) { } else if (fLastTraceMethod == ReverseTraceMethod.FULL_TRACE) {
HandlerUtil.updateRadioState(commandService.getCommand(REVERSE_TOGGLE_COMMAND_ID), "UseSoftTrace"); //$NON-NLS-1$
element.setIcon(fTracemethodOffImages[0]); element.setIcon(fTracemethodOffImages[0]);
} else { } else {
element.setIcon(fTracemethodDefaultImage); element.setIcon(fTracemethodDefaultImage);
@ -305,4 +309,4 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements
} }
} }
} }
} }

View file

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