Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/debug
diff options
context:
space:
mode:
authorMikhail Khodjaiants2003-11-19 16:47:53 -0500
committerMikhail Khodjaiants2003-11-19 16:47:53 -0500
commit21f66ca19b0aeea56234df82d0b084eb1fca6425 (patch)
tree325256393b13ee47764fdc8d9011edf8f139879f /debug
parentff03b9fc87418dffaa1cd3d8aaeb706f1e01c961 (diff)
downloadorg.eclipse.cdt-21f66ca19b0aeea56234df82d0b084eb1fca6425.tar.gz
org.eclipse.cdt-21f66ca19b0aeea56234df82d0b084eb1fca6425.tar.xz
org.eclipse.cdt-21f66ca19b0aeea56234df82d0b084eb1fca6425.zip
Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process.
Diffstat (limited to 'debug')
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/ChangeLog12
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java27
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java5
-rw-r--r--debug/org.eclipse.cdt.debug.mi.ui/ChangeLog13
-rw-r--r--debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/GDBServerDebuggerPage.java45
-rw-r--r--debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/preferences/MIPreferencePage.java61
6 files changed, 111 insertions, 52 deletions
diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
index 2baced1f001..11165dd7b34 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
@@ -1,3 +1,15 @@
+2003-11-19 Mikhail Khodjaiants
+
+ Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process.
+ * src/org/eclipse/cdt/debug/mi/core/MIPlugin.java: removed the 'getAdjustedTimeout' method.
+
+2003-11-19 Mikhail Khodjaiants
+
+ Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process.
+ * src/org/eclipse/cdt/debug/mi/core/MIPlugin.java: initialization of preferences by default values.
+ * src/org/eclipse/cdt/debug/mi/core/MISession.java: removed the duplicate constant for the default
+ launch timeout value.
+
2003-11-13 Mikhail Khodjaiants
* src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
index 0fc77d809e5..3ff5eda8587 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
@@ -290,27 +290,6 @@ public class MIPlugin extends Plugin {
}
/**
- * Retrieve the session timeout.
- *
- * Allow at least one second per megabyte as a minimum on the timeout
- * (note one second is an arbitrary choice based on swapping performance).
- * This is required for loading the symbols from very large programs.
- */
- private int getAdjustedTimeout(File program) {
- Preferences prefs = plugin.getPluginPreferences();
- int timeout = prefs.getInt(IMIConstants.PREF_REQUEST_TIMEOUT); //milliseconds
- if(program != null && program.exists()) {
- long programSize = program.length();
- int minimumTimeout = (int)(programSize / 1000L);
- if(timeout < minimumTimeout) {
- //debugLog("Adjusting timeout from " + timeout + "ms to " + minimumTimeout + "ms");
- timeout = minimumTimeout;
- }
- }
- return timeout;
- }
-
- /**
* Do some basic synchronisation, gdb make take some time to load
* for whatever reasons.
* @param args
@@ -348,9 +327,6 @@ public class MIPlugin extends Plugin {
MIPlugin plugin = getDefault();
Preferences prefs = plugin.getPluginPreferences();
int launchTimeout = prefs.getInt(IMIConstants.PREF_REQUEST_LAUNCH_TIMEOUT);
- if (launchTimeout <= 0) {
- launchTimeout = getAdjustedTimeout(program);
- }
while (syncStartup.isAlive()) {
try {
pgdb.wait(launchTimeout);
@@ -378,7 +354,8 @@ public class MIPlugin extends Plugin {
* @see org.eclipse.core.runtime.Plugin#initializeDefaultPluginPrefrences()
*/
protected void initializeDefaultPluginPreferences() {
- getPluginPreferences().setDefault(IMIConstants.PREF_REQUEST_TIMEOUT, MISession.REQUEST_TIMEOUT);
+ getPluginPreferences().setDefault(IMIConstants.PREF_REQUEST_TIMEOUT, IMIConstants.DEF_REQUEST_TIMEOUT);
+ getPluginPreferences().setDefault(IMIConstants.PREF_REQUEST_LAUNCH_TIMEOUT, IMIConstants.DEF_REQUEST_LAUNCH_TIMEOUT);
}
/* (non-Javadoc)
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java
index 67cb613ab26..9cc6f531a7d 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java
@@ -44,11 +44,6 @@ public class MISession extends Observable {
*/
public final static int CORE = 2;
- /**
- * Default wait() period for an answer after a query, 10 seconds.
- */
- public static long REQUEST_TIMEOUT = 10000; // 10 * 1000 (~ 10 secs);
-
boolean terminated;
// hold the type of the session(post-mortem, attach etc ..)
diff --git a/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog b/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog
index 19e45664af6..62a5833c145 100644
--- a/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.mi.ui/ChangeLog
@@ -1,3 +1,16 @@
+2003-11-19 Mikhail Khodjaiants
+
+ Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process.
+ * src/org/eclipse/cdt/debug/mi/internal/ui/preferences/MIPreferencePage.java:
+ added a text field for the launch timeout.
+
+2003-11-06 Alain Magloire
+
+ Patch from Ashish Karkare(TimeSys)
+ *src/org/eclipse/cdt/debug/mi/internal/ui/GDBServerDebuggerPage.java
+ Add a new Combo that helps select a reasonable line speed, and storing
+ the selected value as a configuration attribute.
+
2003-09-29 Mikhail Khodjaiants
Improved the layout of the 'Shared Libraries' component.
* SolibSearchPathBlock.java
diff --git a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/GDBServerDebuggerPage.java b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/GDBServerDebuggerPage.java
index 0b8f65d6c94..b29cd7c665a 100644
--- a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/GDBServerDebuggerPage.java
+++ b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/GDBServerDebuggerPage.java
@@ -25,6 +25,7 @@ import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
@@ -37,6 +38,7 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
protected Text fHostText;
protected Text fHostPort;
protected Text fAsyncDev;
+ protected Combo fAsyncDevSpeedCombo;
private Button fAutoSoLibButton;
public void createControl(Composite parent) {
@@ -83,6 +85,7 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
fAsyncButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
fAsyncDev.setEnabled(fAsyncButton.getSelection());
+ fAsyncDevSpeedCombo.setEnabled(fAsyncButton.getSelection());
updateLaunchConfigurationDialog();
}
});
@@ -112,6 +115,8 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
}
});
+
+
Label asyncDevLabel= new Label(comp, SWT.NONE);
asyncDevLabel.setText("Serial device:");
@@ -124,6 +129,26 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
}
});
+ Label asyncDevSpeedLabel= new Label(comp, SWT.NONE);
+ asyncDevSpeedLabel.setText("Serial speed:");
+
+
+ fAsyncDevSpeedCombo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY);
+ String choices [] = {"9600", "19200","38400", "57600", "115200"};
+ fAsyncDevSpeedCombo.setItems(choices);
+ fAsyncDevSpeedCombo.select(choices.length-1);
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ fAsyncDevSpeedCombo.setLayoutData(gd);
+ fAsyncDevSpeedCombo.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent arg0) {
+
+ updateLaunchConfigurationDialog();
+
+ }
+ });
+
fTCPButton.setSelection(true);
fAsyncButton.setSelection(false);
fHostText.setEnabled(true);
@@ -131,7 +156,7 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
fAsyncDev.setEnabled(false);
fHostPort.setEnabled(true);
fHostText.setEnabled(true);
- fAsyncDev.setEnabled(false);
+ fAsyncDevSpeedCombo.setEnabled(false);
createVerticalSpacer(comp, 2);
@@ -212,6 +237,14 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
if (attr == null) {
configuration.setAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV, "/dev/ttyS0");
}
+ attr = null;
+ try {
+ attr = configuration.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV_SPEED, (String) null);
+ } catch (CoreException e) {
+ }
+ if (attr == null) {
+ configuration.setAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV_SPEED, "115200");
+ }
}
/**
@@ -236,9 +269,9 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
setMessage(null);
}
} else {
- valid = fAsyncDev.getText().length() != 0;
+ valid = ((fAsyncDev.getText().length() != 0) && (fAsyncDevSpeedCombo.getSelectionIndex()!=-1)) ;
if (!valid) {
- setErrorMessage("If Async is selected, device must be specified");
+ setErrorMessage("If Async is selected, device and speed must be specified");
setMessage(null);
}
}
@@ -253,6 +286,7 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
String hostText = "";
String hostPort = "";
String asyncDev = "/dev/ttyS0";
+ String asyncDevSpeed = "115200";
boolean autosolib = false;
try {
debuggerCommand = configuration.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEBUG_NAME, "gdb");
@@ -264,6 +298,7 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
hostText = configuration.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_HOST, "");
hostPort = configuration.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_PORT, "");
asyncDev = configuration.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV, "");
+ asyncDevSpeed = configuration.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV_SPEED, "");
} catch (CoreException e) {
}
fDebuggerCommandText.setText(debuggerCommand);
@@ -272,9 +307,11 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
fHostText.setText(hostText);
fHostPort.setText(hostPort);
fAsyncDev.setText(asyncDev);
+ fAsyncDevSpeedCombo.select(fAsyncDevSpeedCombo.indexOf(asyncDevSpeed));
fHostText.setEnabled(isTcp);
fHostPort.setEnabled(isTcp);
fAsyncDev.setEnabled(!isTcp);
+ fAsyncDevSpeedCombo.setEnabled(!isTcp);
fAutoSoLibButton.setSelection(autosolib);
}
@@ -283,6 +320,7 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
String hostText = fHostText.getText();
String hostPort = fHostPort.getText();
String asyncDev = fAsyncDev.getText();
+ String asyncDevSpeed = fAsyncDevSpeedCombo.getItem(fAsyncDevSpeedCombo.getSelectionIndex());
debuggerCommand.trim();
hostText.trim();
hostPort.trim();
@@ -293,6 +331,7 @@ public class GDBServerDebuggerPage extends AbstractLaunchConfigurationTab {
configuration.setAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_HOST, hostText);
configuration.setAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_PORT, hostPort);
configuration.setAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV, asyncDev);
+ configuration.setAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV_SPEED, asyncDevSpeed);
}
public String getName() {
diff --git a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/preferences/MIPreferencePage.java b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/preferences/MIPreferencePage.java
index 14338bfc538..460b4c67532 100644
--- a/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/preferences/MIPreferencePage.java
+++ b/debug/org.eclipse.cdt.debug.mi.ui/src/org/eclipse/cdt/debug/mi/internal/ui/preferences/MIPreferencePage.java
@@ -36,8 +36,11 @@ import org.eclipse.ui.help.WorkbenchHelp;
*/
public class MIPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
{
- // Timeout preference widgets
- IntegerFieldEditor fTimeoutText;
+ // Debugger timeout preference widgets
+ IntegerFieldEditor fDebugTimeoutText;
+
+ // Launch timeout preference widgets
+ IntegerFieldEditor fLaunchTimeoutText;
/**
* Constructor for MIPreferencePage.
@@ -95,7 +98,8 @@ public class MIPreferencePage extends PreferencePage implements IWorkbenchPrefer
*/
private void setValues()
{
- fTimeoutText.setStringValue( new Integer( MIPlugin.getDefault().getPluginPreferences().getInt( IMIConstants.PREF_REQUEST_TIMEOUT ) ).toString() );
+ fDebugTimeoutText.setStringValue( new Integer( MIPlugin.getDefault().getPluginPreferences().getInt( IMIConstants.PREF_REQUEST_TIMEOUT ) ).toString() );
+ fLaunchTimeoutText.setStringValue( new Integer( MIPlugin.getDefault().getPluginPreferences().getInt( IMIConstants.PREF_REQUEST_LAUNCH_TIMEOUT ) ).toString() );
}
/**
@@ -121,7 +125,8 @@ public class MIPreferencePage extends PreferencePage implements IWorkbenchPrefer
private void setDefaultValues()
{
- fTimeoutText.setStringValue( new Integer( IMIConstants.DEF_REQUEST_TIMEOUT ).toString() );
+ fDebugTimeoutText.setStringValue( new Integer( IMIConstants.DEF_REQUEST_TIMEOUT ).toString() );
+ fLaunchTimeoutText.setStringValue( new Integer( IMIConstants.DEF_REQUEST_LAUNCH_TIMEOUT ).toString() );
}
/* (non-Javadoc)
@@ -150,25 +155,25 @@ public class MIPreferencePage extends PreferencePage implements IWorkbenchPrefer
data.horizontalSpan = 2;
spacingComposite.setLayoutData( data );
- fTimeoutText = new IntegerFieldEditor( IMIConstants.PREF_REQUEST_TIMEOUT, "Debugger &timeout (ms):", spacingComposite );
- data = new GridData();
- data.widthHint = convertWidthInCharsToPixels( 10 );
- fTimeoutText.getTextControl( spacingComposite ).setLayoutData( data );
- fTimeoutText.setPreferenceStore( MIUIPlugin.getDefault().getPreferenceStore() );
- fTimeoutText.setPreferencePage( this );
- fTimeoutText.setValidateStrategy( StringFieldEditor.VALIDATE_ON_KEY_STROKE );
- fTimeoutText.setValidRange( IMIConstants.MIN_REQUEST_TIMEOUT, IMIConstants.MAX_REQUEST_TIMEOUT );
- String minValue = Integer.toString( IMIConstants.MIN_REQUEST_TIMEOUT );
- String maxValue = Integer.toString( IMIConstants.MAX_REQUEST_TIMEOUT );
- fTimeoutText.setErrorMessage( MessageFormat.format( "The valid value range is [{0},{1}].", new String[]{ minValue, maxValue } ) );
- fTimeoutText.load();
- fTimeoutText.setPropertyChangeListener(
+ fDebugTimeoutText = createTimeoutField( IMIConstants.PREF_REQUEST_TIMEOUT, "&Debugger timeout (ms):", spacingComposite );
+ fDebugTimeoutText.setPropertyChangeListener(
new IPropertyChangeListener()
{
public void propertyChange( PropertyChangeEvent event )
{
if ( event.getProperty().equals( FieldEditor.IS_VALID ) )
- setValid( fTimeoutText.isValid() );
+ setValid( fDebugTimeoutText.isValid() );
+ }
+ } );
+
+ fLaunchTimeoutText = createTimeoutField( IMIConstants.PREF_REQUEST_LAUNCH_TIMEOUT, "&Launch &timeout (ms):", spacingComposite );
+ fLaunchTimeoutText.setPropertyChangeListener(
+ new IPropertyChangeListener()
+ {
+ public void propertyChange( PropertyChangeEvent event )
+ {
+ if ( event.getProperty().equals( FieldEditor.IS_VALID ) )
+ setValid( fLaunchTimeoutText.isValid() );
}
} );
}
@@ -179,6 +184,24 @@ public class MIPreferencePage extends PreferencePage implements IWorkbenchPrefer
*/
private void storeValues()
{
- MIPlugin.getDefault().getPluginPreferences().setValue( IMIConstants.PREF_REQUEST_TIMEOUT, fTimeoutText.getIntValue() );
+ MIPlugin.getDefault().getPluginPreferences().setValue( IMIConstants.PREF_REQUEST_TIMEOUT, fDebugTimeoutText.getIntValue() );
+ MIPlugin.getDefault().getPluginPreferences().setValue( IMIConstants.PREF_REQUEST_LAUNCH_TIMEOUT, fLaunchTimeoutText.getIntValue() );
+ }
+
+ private IntegerFieldEditor createTimeoutField( String preference, String label, Composite parent )
+ {
+ IntegerFieldEditor toText = new IntegerFieldEditor( preference, label, parent );
+ GridData data = new GridData();
+ data.widthHint = convertWidthInCharsToPixels( 10 );
+ toText.getTextControl( parent ).setLayoutData( data );
+ toText.setPreferenceStore( MIUIPlugin.getDefault().getPreferenceStore() );
+ toText.setPreferencePage( this );
+ toText.setValidateStrategy( StringFieldEditor.VALIDATE_ON_KEY_STROKE );
+ toText.setValidRange( IMIConstants.MIN_REQUEST_TIMEOUT, IMIConstants.MAX_REQUEST_TIMEOUT );
+ String minValue = Integer.toString( IMIConstants.MIN_REQUEST_TIMEOUT );
+ String maxValue = Integer.toString( IMIConstants.MAX_REQUEST_TIMEOUT );
+ toText.setErrorMessage( MessageFormat.format( "The valid value range is [{0},{1}].", new String[]{ minValue, maxValue } ) );
+ toText.load();
+ return toText;
}
}

Back to the top