mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-01 06:05:24 +02:00
[300586] - Error logged by DsfSuspendTrigger
This commit is contained in:
parent
5862d4025c
commit
52945d7704
3 changed files with 71 additions and 3 deletions
|
@ -22,6 +22,7 @@ import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
|
import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
|
||||||
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
|
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
|
||||||
|
import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.Sequence;
|
import org.eclipse.cdt.dsf.concurrent.Sequence;
|
||||||
import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent;
|
import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent;
|
||||||
|
@ -419,7 +420,7 @@ public class GDBControl extends AbstractMIControl implements IGDBControl {
|
||||||
IGdbDebugPreferenceConstants.PREF_AUTO_TERMINATE_GDB,
|
IGdbDebugPreferenceConstants.PREF_AUTO_TERMINATE_GDB,
|
||||||
true, null)) {
|
true, null)) {
|
||||||
// If the inferior finishes, let's terminate GDB
|
// If the inferior finishes, let's terminate GDB
|
||||||
terminate(new RequestMonitor(getExecutor(), null));
|
terminate(new RequestMonitor(ImmediateExecutor.getInstance(), null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,8 +115,8 @@ public class CountingRequestMonitor extends RequestMonitor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void setStatus(IStatus status) {
|
public synchronized void setStatus(IStatus status) {
|
||||||
if ((getStatus() instanceof MultiStatus)) {
|
if ((getStatus() instanceof DsfMultiStatus)) {
|
||||||
((MultiStatus)getStatus()).add(status);
|
((DsfMultiStatus)getStatus()).add(status);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2008 Wind River 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Wind River Systems - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.dsf.concurrent;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
import org.eclipse.core.runtime.MultiStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multi-status that calculates the maximum error code for all children.
|
||||||
|
*
|
||||||
|
* @since 2.1
|
||||||
|
*/
|
||||||
|
public class DsfMultiStatus extends MultiStatus {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and returns a new multi-status object with the given children.
|
||||||
|
*
|
||||||
|
* @param pluginId the unique identifier of the relevant plug-in
|
||||||
|
* @param code the plug-in-specific status code
|
||||||
|
* @param newChildren the list of children status objects
|
||||||
|
* @param message a human-readable message, localized to the
|
||||||
|
* current locale
|
||||||
|
* @param exception a low-level exception, or <code>null</code> if not
|
||||||
|
* applicable
|
||||||
|
*/
|
||||||
|
public DsfMultiStatus(String pluginId, int code, IStatus[] newChildren, String message, Throwable exception) {
|
||||||
|
super(pluginId, code, newChildren, message, exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and returns a new multi-status object with no children.
|
||||||
|
*
|
||||||
|
* @param pluginId the unique identifier of the relevant plug-in
|
||||||
|
* @param code the plug-in-specific status code
|
||||||
|
* @param message a human-readable message, localized to the
|
||||||
|
* current locale
|
||||||
|
* @param exception a low-level exception, or <code>null</code> if not
|
||||||
|
* applicable
|
||||||
|
*/
|
||||||
|
public DsfMultiStatus(String pluginId, int code, String message, Throwable exception) {
|
||||||
|
super(pluginId, code, message, exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCode() {
|
||||||
|
IStatus[] children = getChildren();
|
||||||
|
if (children.length != 0) {
|
||||||
|
int maxCode = Integer.MIN_VALUE;
|
||||||
|
for (IStatus status : children) {
|
||||||
|
if (status.getCode() > maxCode) {
|
||||||
|
maxCode = status.getCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return maxCode;
|
||||||
|
} else {
|
||||||
|
return super.getCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue