diff options
Diffstat (limited to 'dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java')
-rw-r--r-- | dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java | 183 |
1 files changed, 93 insertions, 90 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java index f1c38f19e82..9e8a4a1ae3c 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_10.java @@ -40,97 +40,100 @@ import org.eclipse.core.runtime.Status; */ public class StartOrRestartProcessSequence_7_10 extends StartOrRestartProcessSequence_7_3 { - private IGDBControl fCommandControl; - private IReverseRunControl2 fReverseService; - private ReverseDebugMethod fReverseMode = ReverseDebugMethod.SOFTWARE; - private final Map<String, Object> fAttributes; - - public StartOrRestartProcessSequence_7_10(DsfExecutor executor, IContainerDMContext containerDmc, - Map<String, Object> attributes, boolean restart, DataRequestMonitor<IContainerDMContext> rm) { - super(executor, containerDmc, attributes, restart, rm); - - fAttributes = attributes; - } - - @Override - protected String[] getExecutionOrder(String group) { - if (GROUP_TOP_LEVEL.equals(group)) { - // Initialize the list with the base class' steps - // We need to create a list that we can modify, which is why we create our own ArrayList. - List<String> orderList = new ArrayList<String>(Arrays.asList(super.getExecutionOrder(GROUP_TOP_LEVEL))); - - // Insert the new stepSetReverseMode after stepSetReverseOff - orderList.add(orderList.indexOf("stepSetReverseOff") + 1, "stepSetReverseMode"); //$NON-NLS-1$ //$NON-NLS-2$ - - return orderList.toArray(new String[orderList.size()]); - } - - return null; - } - - /** - * Initialize the members of the StartOrRestartProcessSequence_7_10 class. - * This step is mandatory for the rest of the sequence to complete. - */ - @Override - @Execute - public void stepInitializeBaseSequence(final RequestMonitor rm) { - super.stepInitializeBaseSequence(new ImmediateRequestMonitor(rm) { - @Override - protected void handleSuccess() { - DsfServicesTracker tracker = new DsfServicesTracker(GdbPlugin.getBundleContext(), getContainerContext().getSessionId()); - fCommandControl = tracker.getService(IGDBControl.class); - fReverseService = tracker.getService(IReverseRunControl2.class); - tracker.dispose(); - - if (fReverseService != null) { - - // Here we check for the reverse mode to be used for launching the reverse - // debugging service. - String reverseMode = CDebugUtils.getAttribute(fAttributes, - IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REVERSE_MODE, - IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_DEFAULT); - - if (reverseMode.equals(IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_HARDWARE)) { - String hwTracePref = Platform.getPreferencesService().getString(GdbPlugin.PLUGIN_ID, - IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_HARDWARE, - IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_GDB_TRACE, null); - + private IGDBControl fCommandControl; + private IReverseRunControl2 fReverseService; + private ReverseDebugMethod fReverseMode = ReverseDebugMethod.SOFTWARE; + private final Map<String, Object> fAttributes; + + public StartOrRestartProcessSequence_7_10(DsfExecutor executor, IContainerDMContext containerDmc, + Map<String, Object> attributes, boolean restart, DataRequestMonitor<IContainerDMContext> rm) { + super(executor, containerDmc, attributes, restart, rm); + + fAttributes = attributes; + } + + @Override + protected String[] getExecutionOrder(String group) { + if (GROUP_TOP_LEVEL.equals(group)) { + // Initialize the list with the base class' steps + // We need to create a list that we can modify, which is why we create our own ArrayList. + List<String> orderList = new ArrayList<String>(Arrays.asList(super.getExecutionOrder(GROUP_TOP_LEVEL))); + + // Insert the new stepSetReverseMode after stepSetReverseOff + orderList.add(orderList.indexOf("stepSetReverseOff") + 1, "stepSetReverseMode"); //$NON-NLS-1$ //$NON-NLS-2$ + + return orderList.toArray(new String[orderList.size()]); + } + + return null; + } + + /** + * Initialize the members of the StartOrRestartProcessSequence_7_10 class. + * This step is mandatory for the rest of the sequence to complete. + */ + @Override + @Execute + public void stepInitializeBaseSequence(final RequestMonitor rm) { + super.stepInitializeBaseSequence(new ImmediateRequestMonitor(rm) { + @Override + protected void handleSuccess() { + DsfServicesTracker tracker = new DsfServicesTracker(GdbPlugin.getBundleContext(), + getContainerContext().getSessionId()); + fCommandControl = tracker.getService(IGDBControl.class); + fReverseService = tracker.getService(IReverseRunControl2.class); + tracker.dispose(); + + if (fReverseService != null) { + + // Here we check for the reverse mode to be used for launching the reverse + // debugging service. + String reverseMode = CDebugUtils.getAttribute(fAttributes, + IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REVERSE_MODE, + IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_DEFAULT); + + if (reverseMode.equals(IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_HARDWARE)) { + String hwTracePref = Platform.getPreferencesService().getString(GdbPlugin.PLUGIN_ID, + IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_HARDWARE, + IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_GDB_TRACE, null); + if (hwTracePref.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_BRANCH_TRACE)) { - fReverseMode = ReverseDebugMethod.BRANCH_TRACE; - } else if (hwTracePref.equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_PROCESSOR_TRACE)) { - fReverseMode = ReverseDebugMethod.PROCESSOR_TRACE; - } else { - fReverseMode = ReverseDebugMethod.GDB_TRACE; - } - } else if (reverseMode.equals(IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_SOFTWARE)) { - fReverseMode = ReverseDebugMethod.SOFTWARE; - } else { - rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, IDsfStatusConstants.INTERNAL_ERROR, "Unexpected reverse debugging type: " + reverseMode, null)); //$NON-NLS-1$ - } - } - - rm.done(); - } - }); - } - - /** + fReverseMode = ReverseDebugMethod.BRANCH_TRACE; + } else if (hwTracePref + .equals(IGdbDebugPreferenceConstants.PREF_REVERSE_TRACE_METHOD_PROCESSOR_TRACE)) { + fReverseMode = ReverseDebugMethod.PROCESSOR_TRACE; + } else { + fReverseMode = ReverseDebugMethod.GDB_TRACE; + } + } else if (reverseMode.equals(IGDBLaunchConfigurationConstants.DEBUGGER_REVERSE_MODE_SOFTWARE)) { + fReverseMode = ReverseDebugMethod.SOFTWARE; + } else { + rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, IDsfStatusConstants.INTERNAL_ERROR, + "Unexpected reverse debugging type: " + reverseMode, null)); //$NON-NLS-1$ + } + } + + rm.done(); + } + }); + } + + /** * @since 5.2 */ - protected ReverseDebugMethod getReverseMode() { - return fReverseMode; - } - - /** - * Here we set the reverse debug mode - */ - @Execute - public void stepSetReverseMode(RequestMonitor rm) { - if (getReverseEnabled() && fReverseService != null ) { - fReverseService.enableReverseMode(fCommandControl.getContext(), fReverseMode, rm); - } else { - rm.done(); - } - } + protected ReverseDebugMethod getReverseMode() { + return fReverseMode; + } + + /** + * Here we set the reverse debug mode + */ + @Execute + public void stepSetReverseMode(RequestMonitor rm) { + if (getReverseEnabled() && fReverseService != null) { + fReverseService.enableReverseMode(fCommandControl.getContext(), fReverseMode, rm); + } else { + rm.done(); + } + } } |