From 3be258d79b56087a6e112da4dbd36b79da07fec7 Mon Sep 17 00:00:00 2001 From: raddepal Date: Wed, 24 Feb 2016 11:51:49 -0500 Subject: [PATCH] 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 --- .../plugin.properties | 16 +-- debug/org.eclipse.cdt.debug.ui/plugin.xml | 106 ++++++++++-------- .../commands/ReverseToggleCommandHandler.java | 16 ++- .../ui/commands/GdbReverseToggleCommand.java | 4 +- 4 files changed, 79 insertions(+), 63 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index 8863c434586..eba255ae1a4 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -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 diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index 2487d86a5a6..ddb1cca3880 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -2337,7 +2337,7 @@ - + @@ -2459,11 +2460,11 @@ - + id="org.eclipse.cdt.debug.ui.reverseToggle.menu" + label="%ReverseToggle.label"> @@ -2524,11 +2525,22 @@ + label="%ReverseToggle.label"> + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + 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 37955228a66..55280c4e827 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 @@ -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); @@ -305,4 +309,4 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements } } } -} \ No newline at end of file +} 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 a9f43c1f499..f4fb6266d93 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 @@ -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) {