diff options
author | Marc Khouzam | 2011-12-23 14:49:51 +0000 |
---|---|---|
committer | Marc Khouzam | 2011-12-23 14:49:51 +0000 |
commit | 5c70f146df46ea0628231f0f4002b7e530e79c4e (patch) | |
tree | d45a335f2caacb63170cd4871cadd97a57b20b11 /dsf-gdb | |
parent | c1f0069b9725e77b67a9ed3f7c9f9238bec82c34 (diff) | |
download | org.eclipse.cdt-5c70f146df46ea0628231f0f4002b7e530e79c4e.tar.gz org.eclipse.cdt-5c70f146df46ea0628231f0f4002b7e530e79c4e.tar.xz org.eclipse.cdt-5c70f146df46ea0628231f0f4002b7e530e79c4e.zip |
Bug 365471: Explicitly set 'target-async off'
Diffstat (limited to 'dsf-gdb')
4 files changed, 95 insertions, 9 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java index 9ab997480a6..92ee9fb219d 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java @@ -11,6 +11,7 @@ * IBM Corporation * Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121) * Sergey Prigogin (Google) + * Marc Khouzam (Ericsson) - No longer call method to check non-stop for GDB < 7.0 (Bug 365471) *******************************************************************************/ package org.eclipse.cdt.dsf.gdb.launching; @@ -79,7 +80,6 @@ public class FinalLaunchSequence extends ReflectionSequence { "stepSetBreakpointPending", //$NON-NLS-1$ "stepEnablePrettyPrinting", //$NON-NLS-1$ "stepSourceGDBInitFile", //$NON-NLS-1$ - "stepSetNonStop", //$NON-NLS-1$ "stepSetAutoLoadSharedLibrarySymbols", //$NON-NLS-1$ "stepSetSharedLibraryPaths", //$NON-NLS-1$ @@ -251,6 +251,9 @@ public class FinalLaunchSequence extends ReflectionSequence { * Enable non-stop mode if requested. * @since 4.0 */ + // Keep this method in this class for backwards-compatibility, although + // it is called only by sub-classes. + // It could be moved to FinalLaunchSequence_7_0, otherwise. @Execute public void stepSetNonStop(final RequestMonitor requestMonitor) { boolean isNonStop = CDebugUtils.getAttribute( @@ -280,7 +283,17 @@ public class FinalLaunchSequence extends ReflectionSequence { } }); } else { - requestMonitor.done(); + // Explicitly set target-async to off for all-stop mode. + fCommandControl.queueCommand( + fCommandFactory.createMIGDBSetTargetAsync(fCommandControl.getContext(), false), + new DataRequestMonitor<MIInfo>(getExecutor(), requestMonitor) { + @Override + protected void handleError() { + // We should only be calling this for GDB >= 7.0, + // but just in case, accept errors for older GDBs + requestMonitor.done(); + } + }); } } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_0.java new file mode 100644 index 00000000000..19f2d875f8d --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_0.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright (c) 2011 Ericsson 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Marc Khouzam (Ericsson) - initial API and implementation (Bug 365471) + *******************************************************************************/ +package org.eclipse.cdt.dsf.gdb.launching; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.eclipse.cdt.dsf.concurrent.RequestMonitor; +import org.eclipse.cdt.dsf.concurrent.RequestMonitorWithProgress; +import org.eclipse.cdt.dsf.service.DsfSession; + +/** + * Subclass for GDB >= 7.0. + * This class currently sets non-stop mode, or makes + * sure target-async is off for all-stop. + * + * @since 4.1 + */ +public class FinalLaunchSequence_7_0 extends FinalLaunchSequence { + + public FinalLaunchSequence_7_0(DsfSession session, Map<String, Object> attributes, RequestMonitorWithProgress rm) { + super(session, attributes, rm); + } + + @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))); + + // Now insert our steps right after the initialization of the base class. + orderList.add(orderList.indexOf("stepInitializeFinalLaunchSequence") + 1, "stepInitializeFinalLaunchSequence_7_0"); //$NON-NLS-1$ //$NON-NLS-2$ + + // Note that stepSetNonStop is defined in the base class for backwards-compatibility + orderList.add(orderList.indexOf("stepSourceGDBInitFile") + 1, "stepSetNonStop"); //$NON-NLS-1$ //$NON-NLS-2$ + + return orderList.toArray(new String[orderList.size()]); + } + + return null; + } + + /** + * Initialize the members of the FinalLaunchSequence_7_0 class. + * This step is mandatory for the rest of the sequence to complete. + */ + @Execute + public void stepInitializeFinalLaunchSequence_7_0(RequestMonitor rm) { + rm.done(); + } +} diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_2.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_2.java index ae5cdd7ad35..f5b1683c5a3 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_2.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence_7_2.java @@ -7,6 +7,7 @@ * * Contributors: * Ericsson - initial API and implementation + * Marc Khouzam (Ericsson) - Use new FinalLaunchSequence_7_0 as base class (Bug 365471) *******************************************************************************/ package org.eclipse.cdt.dsf.gdb.launching; @@ -34,7 +35,7 @@ import org.eclipse.core.runtime.Status; * * @since 4.0 */ -public class FinalLaunchSequence_7_2 extends FinalLaunchSequence { +public class FinalLaunchSequence_7_2 extends FinalLaunchSequence_7_0 { private IGDBControl fGdbControl; private DsfSession fSession; @@ -56,7 +57,7 @@ public class FinalLaunchSequence_7_2 extends FinalLaunchSequence { List<String> orderList = new ArrayList<String>(Arrays.asList(super.getExecutionOrder(GROUP_TOP_LEVEL))); // Now insert our steps right after the initialization of the base class. - orderList.add(orderList.indexOf("stepInitializeFinalLaunchSequence") + 1, "stepInitializeFinalLaunchSequence_7_2"); //$NON-NLS-1$ //$NON-NLS-2$ + orderList.add(orderList.indexOf("stepInitializeFinalLaunchSequence_7_0") + 1, "stepInitializeFinalLaunchSequence_7_2"); //$NON-NLS-1$ //$NON-NLS-2$ orderList.add(orderList.indexOf("stepSetBreakpointPending") + 1, "stepDetachOnFork"); //$NON-NLS-1$ //$NON-NLS-2$ return orderList.toArray(new String[orderList.size()]); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl_7_0.java index 09c8cced6c4..ebbcf745d65 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl_7_0.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl_7_0.java @@ -11,6 +11,7 @@ * Ericsson - New version for 7_0 * Vladimir Prus (CodeSourcery) - Support for -data-read-memory-bytes (bug 322658) * Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121) + * Marc Khouzam (Ericsson) - Call new FinalLaunchSequence_7_0 (Bug 365471) *******************************************************************************/ package org.eclipse.cdt.dsf.gdb.service.command; @@ -38,7 +39,7 @@ import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent; import org.eclipse.cdt.dsf.debug.service.command.ICommandControl; import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService; import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin; -import org.eclipse.cdt.dsf.gdb.launching.FinalLaunchSequence; +import org.eclipse.cdt.dsf.gdb.launching.FinalLaunchSequence_7_0; import org.eclipse.cdt.dsf.gdb.service.IGDBBackend; import org.eclipse.cdt.dsf.gdb.service.IGDBTraceControl.ITraceRecordSelectedChangedDMEvent; import org.eclipse.cdt.dsf.mi.service.IMIBackend; @@ -170,6 +171,7 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { } + @Override public String getId() { return fMIBackend.getId(); } @@ -179,10 +181,12 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { return fControlDmc; } + @Override public ICommandControlDMContext getContext() { return fControlDmc; } + @Override public void terminate(final RequestMonitor rm) { if (fTerminated) { rm.done(); @@ -204,6 +208,7 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { // runnable will kill the task. final Future<?> forceQuitTask = getExecutor().schedule( new DsfRunnable() { + @Override public void run() { fMIBackend.destroy(); rm.done(); @@ -246,6 +251,7 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { }); } + @Override public AbstractCLIProcess getCLIProcess() { return fCLIProcess; } @@ -253,11 +259,13 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { /** * @since 2.0 */ + @Override public void setTracingStream(OutputStream tracingStream) { setMITracingStream(tracingStream); } /** @since 3.0 */ + @Override public void setEnvironment(Properties props, boolean clear, RequestMonitor rm) { int count = 0; CountingRequestMonitor countingRm = new CountingRequestMonitor(getExecutor(), rm); @@ -285,6 +293,7 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { /** * @since 4.0 */ + @Override @SuppressWarnings("unchecked") public void completeInitialization(final RequestMonitor rm) { // We take the attributes from the launchConfiguration @@ -321,10 +330,11 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { * @since 4.0 */ protected Sequence getCompleteInitializationSequence(Map<String, Object> attributes, RequestMonitorWithProgress rm) { - return new FinalLaunchSequence(getSession(), attributes, rm); + return new FinalLaunchSequence_7_0(getSession(), attributes, rm); } /**@since 4.0 */ + @Override public List<String> getFeatures() { return fFeatures; } @@ -468,9 +478,8 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { /** * @since 4.0 */ - public void enablePrettyPrintingForMIVariableObjects( - final RequestMonitor rm) { - + @Override + public void enablePrettyPrintingForMIVariableObjects(RequestMonitor rm) { queueCommand( getCommandFactory().createMIEnablePrettyPrinting(fControlDmc), new DataRequestMonitor<MIInfo>(getExecutor(), rm)); @@ -479,6 +488,7 @@ public class GDBControl_7_0 extends AbstractMIControl implements IGDBControl { /** * @since 4.0 */ + @Override public void setPrintPythonErrors(boolean enabled, RequestMonitor rm) { String subCommand = "set python print-stack " + (enabled ? "on" : "off"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ |