1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-22 22:22:11 +02:00

Fix for Bug 93777: Postmortem and Local launch need a default preference for selected debugger.

This commit is contained in:
Mikhail Khodjaiants 2006-03-06 18:46:09 +00:00
parent 277149fc3f
commit 33cb273cb6
13 changed files with 431 additions and 21 deletions

View file

@ -1,3 +1,8 @@
2006-03-06 Mikhail Khodjaiants
Fix for Bug 93777: Postmortem and Local launch need a default preference for selected debugger.
* CDebugCorePlugin.java
* ICDebugConstants.java
2006-02-27 Mikhail Khodjaiants
All serializable objects should have a stable serialVersionUID.
* CDIException.java

View file

@ -10,7 +10,12 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation;
import org.eclipse.cdt.debug.internal.core.DebugConfiguration;
import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
@ -56,6 +61,8 @@ public class CDebugCorePlugin extends Plugin {
private static CDebugCorePlugin plugin;
private HashMap fDebugConfigurations;
private HashSet fActiveDebugConfigurations;
/**
* Breakpoint listener list.
@ -158,6 +165,13 @@ public class CDebugCorePlugin extends Plugin {
}
}
private void initializeActiveDebugConfigurations() {
fActiveDebugConfigurations = new HashSet( getDebugConfigurations().length );
fActiveDebugConfigurations.addAll( fDebugConfigurations.keySet() );
String[] filteredTypes = CDebugCorePlugin.getDefault().getPluginPreferences().getString( ICDebugConstants.PREF_FILTERED_DEBUGGERS ).split( "\\," ); //$NON-NLS-1$
fActiveDebugConfigurations.removeAll( Arrays.asList( filteredTypes ) );
}
public ICDebugConfiguration[] getDebugConfigurations() {
if ( fDebugConfigurations == null ) {
initializeDebugConfiguration();
@ -165,6 +179,70 @@ public class CDebugCorePlugin extends Plugin {
return (ICDebugConfiguration[])fDebugConfigurations.values().toArray( new ICDebugConfiguration[0] );
}
public ICDebugConfiguration[] getActiveDebugConfigurations() {
if ( fDebugConfigurations == null ) {
initializeDebugConfiguration();
}
if ( fActiveDebugConfigurations == null ) {
initializeActiveDebugConfigurations();
}
ArrayList list = new ArrayList( fActiveDebugConfigurations.size() );
Iterator it = fActiveDebugConfigurations.iterator();
while( it.hasNext() ) {
Object o = fDebugConfigurations.get( it.next() );
if ( o != null )
list.add( o );
}
return (ICDebugConfiguration[])list.toArray( new ICDebugConfiguration[list.size()] );
}
public ICDebugConfiguration[] getDefaultActiveDebugConfigurations() {
List filtered = Arrays.asList( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultString( ICDebugConstants.PREF_FILTERED_DEBUGGERS ).split( "\\," ) ); //$NON-NLS-1$
HashMap all = (HashMap)fDebugConfigurations.clone();
all.keySet().removeAll( filtered );
return (ICDebugConfiguration[])all.values().toArray( new ICDebugConfiguration[all.size()] );
}
public void saveFilteredDebugConfigurations( ICDebugConfiguration[] configurations ) {
disposeActiveDebugConfigurations();
StringBuffer sb = new StringBuffer();
for ( int i = 0; i < configurations.length; ++i ) {
sb.append( configurations[i].getID() ).append( ',' );
}
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_FILTERED_DEBUGGERS, sb.toString() );
CDebugCorePlugin.getDefault().savePluginPreferences();
}
public void saveDefaultDebugConfiguration( String id ) {
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_DEFAULT_DEBUGGER_TYPE, ( id != null ) ? id : "" ); //$NON-NLS-1$
}
public ICDebugConfiguration getDefaultDebugConfiguration() {
ICDebugConfiguration result = null;
try {
result = getDebugConfiguration( CDebugCorePlugin.getDefault().getPluginPreferences().getString( ICDebugConstants.PREF_DEFAULT_DEBUGGER_TYPE ) );
}
catch( CoreException e ) {
}
return result;
}
public ICDebugConfiguration getDefaultDefaultDebugConfiguration() {
ICDebugConfiguration result = null;
try {
result = getDebugConfiguration( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultString( ICDebugConstants.PREF_DEFAULT_DEBUGGER_TYPE ) );
}
catch( CoreException e ) {
}
if ( result == null ) {
}
return result;
}
public boolean isDefaultDebugConfiguration( String id ) {
return id.compareTo( CDebugCorePlugin.getDefault().getPluginPreferences().getString( ICDebugConstants.PREF_DEFAULT_DEBUGGER_TYPE ) ) == 0;
}
public ICDebugConfiguration getDebugConfiguration( String id ) throws CoreException {
if ( fDebugConfigurations == null ) {
initializeDebugConfiguration();
@ -265,6 +343,7 @@ public class CDebugCorePlugin extends Plugin {
disposeBreakpointListenersList();
resetBreakpointsInstallCount();
disposeCommonSourceLookupDirector();
disposeDebugConfigurations();
super.stop( context );
}
@ -299,4 +378,19 @@ public class CDebugCorePlugin extends Plugin {
private void convertSourceLocations( CommonSourceLookupDirector director ) {
director.setSourceContainers( SourceUtils.convertSourceLocations( getCommonSourceLocations() ) );
}
private void disposeActiveDebugConfigurations() {
if ( fActiveDebugConfigurations != null ) {
fActiveDebugConfigurations.clear();
fActiveDebugConfigurations = null;
}
}
private void disposeDebugConfigurations() {
disposeActiveDebugConfigurations();
if ( fDebugConfigurations != null ) {
fDebugConfigurations.clear();
fDebugConfigurations = null;
}
}
}

View file

@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core;
/**
* Constant definitions for C/C++ debug plug-in.
*/
@ -71,7 +72,19 @@ public interface ICDebugConstants {
*/
public static final int MAX_NUMBER_OF_INSTRUCTIONS = 999;
/**
/**
* Preference that saves the default debugger type
* @since 3.1
*/
public static final String PREF_DEFAULT_DEBUGGER_TYPE = PLUGIN_ID + ".cDebug.defaultDebugger"; //$NON-NLS-1$
/**
* Preference that saves the deactivated debugger types
* @since 3.1
*/
public static final String PREF_FILTERED_DEBUGGERS = PLUGIN_ID + ".cDebug.filteredDebuggers"; //$NON-NLS-1$
/**
* Boolean preference controlling whether the instruction stepping mode should be activated.
*
* Temporary. See bugs 79872 and 80323.

View file

@ -1,3 +1,11 @@
2006-03-06 Mikhail Khodjaiants
Fix for Bug 93777: Postmortem and Local launch need a default preference for selected debugger.
* ICDebugHelpContextIds.java
+ DebuggerTypesPage.java
* PreferenceMessages.properties
* plugin.properties
* plugin.xml
2006-02-27 Mikhail Khodjaiants
Discouraged access to EditorsPlugin.
Added support for SharedTextColors to CDebugUIPlugin.

View file

@ -20,6 +20,7 @@ CDebuggerPage.name=C Debugger UI Page
MemoryPreferencePage.name=Memory View
CDebugPreferencePage.name=Debug
SourcePreferencePage.name=Common Source Lookup Path
DebuggerTypesPreferencePage.name=Debugger Types
RunMenu.label=&Run
DebugActionSet.label=C/C++ Debug

View file

@ -92,6 +92,11 @@
class="org.eclipse.cdt.debug.internal.ui.preferences.SourcePreferencePage"
id="org.eclipse.cdt.debug.ui.SourcePreferencePage">
</page>
<page
category="org.eclipse.cdt.debug.ui.CDebugPreferencePage"
class="org.eclipse.cdt.debug.internal.ui.preferences.DebuggerTypesPage"
id="org.eclipse.cdt.debug.ui.DebuggerTypesPreferencePage"
name="%DebuggerTypesPreferencePage.name"/>
</extension>
<extension
point="org.eclipse.ui.actionSets">

View file

@ -23,8 +23,7 @@ import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
*
* @since Jul 23, 2002
*/
public interface ICDebugHelpContextIds
{
public interface ICDebugHelpContextIds {
/**
* C/C++ Debug UI plug-in identifier (value <code>"org.eclipse.cdt.debug.ui"</code>).
*/
@ -62,6 +61,7 @@ public interface ICDebugHelpContextIds
public static final String SHARED_LIBRARIES_PREFERENCE_PAGE = PREFIX + "shared_libraries_preference_page_context"; //$NON-NLS-1$
public static final String MEMORY_PREFERENCE_PAGE = PREFIX + "memory_preference_page_context"; //$NON-NLS-1$
public static final String C_DEBUG_PREFERENCE_PAGE = PREFIX + "c_debug_preference_page_context"; //$NON-NLS-1$
public static final String DEBUGGER_TYPES_PAGE = PREFIX + "debugger_typpes_preference_page_context"; //$NON-NLS-1$
// dialogs
public static final String SOURCE_PATH_MAPPING_DIALOG = PREFIX + "source_path_mapping_dialog_context"; //$NON-NLS-1$

View file

@ -0,0 +1,251 @@
/*******************************************************************************
* Copyright (c) 2004 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.preferences;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.List;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.ICDebugConfiguration;
import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
import org.eclipse.cdt.debug.internal.ui.PixelConverter;
import org.eclipse.cdt.debug.internal.ui.dialogfields.CheckedListDialogField;
import org.eclipse.cdt.debug.internal.ui.dialogfields.DialogField;
import org.eclipse.cdt.debug.internal.ui.dialogfields.IListAdapter;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
/**
* The "Debugger Types" preference page.
*/
public class DebuggerTypesPage extends PreferencePage implements IWorkbenchPreferencePage {
protected static String[] fgButtonLabels = new String[] { PreferenceMessages.getString( "DebuggerTypesPage.0" ), PreferenceMessages.getString( "DebuggerTypesPage.1" ), PreferenceMessages.getString( "DebuggerTypesPage.2" ) }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
/**
* Comment for DebuggerTypesPage.
*/
class DebuggerTypesDialogField extends CheckedListDialogField {
public DebuggerTypesDialogField() {
super( new IListAdapter() {
public void customButtonPressed( DialogField field, int index ) {
}
public void selectionChanged( DialogField field ) {
}
}, fgButtonLabels, new DebuggerTypeLabelProvider() );
}
public Control[] doFillIntoGrid( Composite parent, int nColumns ) {
PixelConverter converter = new PixelConverter( parent );
assertEnoughColumns( nColumns );
Control list = getListControl( parent );
GridData gd = new GridData();
gd.horizontalAlignment = GridData.FILL;
gd.grabExcessHorizontalSpace = true;
gd.verticalAlignment = GridData.FILL;
gd.grabExcessVerticalSpace = true;
gd.horizontalSpan = nColumns - 2;
gd.widthHint = converter.convertWidthInCharsToPixels( 50 );
gd.heightHint = converter.convertHeightInCharsToPixels( 6 );
list.setLayoutData( gd );
Composite buttons = getButtonBox( parent );
gd = new GridData();
gd.horizontalAlignment = GridData.FILL;
gd.grabExcessHorizontalSpace = false;
gd.verticalAlignment = GridData.FILL;
gd.grabExcessVerticalSpace = true;
gd.horizontalSpan = 1;
buttons.setLayoutData( gd );
return new Control[]{ list, buttons };
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.internal.ui.dialogfields.CheckedListDialogField#getManagedButtonState(org.eclipse.jface.viewers.ISelection, int)
*/
protected boolean getManagedButtonState( ISelection sel, int index ) {
// Enable/disable the "Default" button
if ( index == 2 && sel instanceof IStructuredSelection ) {
Object o = ((IStructuredSelection)sel).getFirstElement();
return o != null && isChecked( o );
}
return super.getManagedButtonState( sel, index );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.internal.ui.dialogfields.CheckedListDialogField#managedButtonPressed(int)
*/
protected boolean managedButtonPressed( int index ) {
if ( index == 2 ) {
List list = getSelectedElements();
if ( !list.isEmpty() )
setDefault( ((ICDebugConfiguration)list.get( 0 )).getID() );
else
setDefault( null );
refresh();
}
return super.managedButtonPressed( index );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.internal.ui.dialogfields.ListDialogField#getListStyle()
*/
protected int getListStyle() {
return SWT.BORDER + SWT.SINGLE + SWT.H_SCROLL + SWT.V_SCROLL;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.internal.ui.dialogfields.CheckedListDialogField#doCheckStateChanged(org.eclipse.jface.viewers.CheckStateChangedEvent)
*/
protected void doCheckStateChanged( CheckStateChangedEvent e ) {
super.doCheckStateChanged( e );
ICDebugConfiguration dc = (ICDebugConfiguration)e.getElement();
if ( dc.getID().equals( getDefault() ) && !e.getChecked() ) {
List list = getCheckedElements();
setDefault( ( list.size() > 0 ) ? ((ICDebugConfiguration)list.get( 0 )).getID() : null );
refresh();
}
else if ( e.getChecked() && getDefault() == null ) {
setDefault( ((ICDebugConfiguration)e.getElement()).getID() );
refresh();
}
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.internal.ui.dialogfields.CheckedListDialogField#checkAll(boolean)
*/
public void checkAll( boolean state ) {
super.checkAll( state );
List list = getCheckedElements();
setDefault( ( list.size() > 0 ) ? ((ICDebugConfiguration)list.get( 0 )).getID() : null );
refresh();
}
}
/**
* Comment for DebuggerTypesPage.
*/
class DebuggerTypeLabelProvider extends LabelProvider {
public String getText( Object element ) {
if ( element instanceof ICDebugConfiguration ) {
ICDebugConfiguration dc = (ICDebugConfiguration)element;
String label = dc.getName();
if ( dc.getID().equals( getDefault() ) )
label += MessageFormat.format( " ({0})", new String[] { PreferenceMessages.getString( "DebuggerTypesPage.3" ) } ); //$NON-NLS-1$ //$NON-NLS-2$
return label;
}
return super.getText( element );
}
}
private DebuggerTypesDialogField fListField;
private IWorkbench fWorkbench;
private String fDefault;
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
protected Control createContents( Composite parent ) {
Font font = parent.getFont();
Composite comp = new Composite( parent, SWT.NONE );
GridLayout topLayout = new GridLayout();
topLayout.numColumns = 3;
comp.setLayout( topLayout );
GridData gd = new GridData( GridData.FILL_BOTH );
comp.setLayoutData( gd );
comp.setFont( font );
Label viewerLabel = new Label( comp, SWT.LEFT );
viewerLabel.setText( PreferenceMessages.getString( "DebuggerTypesPage.4" ) ); //$NON-NLS-1$
gd = new GridData( GridData.HORIZONTAL_ALIGN_FILL );
gd.horizontalSpan = 3;
viewerLabel.setLayoutData( gd );
viewerLabel.setFont( font );
fListField = new DebuggerTypesDialogField();
fListField.setCheckAllButtonIndex( 0 );
fListField.setUncheckAllButtonIndex( 1 );
Dialog.applyDialogFont( comp );
fListField.doFillIntoGrid( comp, 3 );
initialize();
getWorkbench().getHelpSystem().setHelp( comp, ICDebugHelpContextIds.DEBUGGER_TYPES_PAGE );
return comp;
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init( IWorkbench workbench ) {
fWorkbench = workbench;
}
private IWorkbench getWorkbench() {
return fWorkbench;
}
private void initialize() {
ICDebugConfiguration dc = CDebugCorePlugin.getDefault().getDefaultDebugConfiguration();
setDefault( ( dc != null ) ? dc.getID() : null );
fListField.addElements( Arrays.asList( CDebugCorePlugin.getDefault().getDebugConfigurations() ) );
fListField.setCheckedElements( Arrays.asList( CDebugCorePlugin.getDefault().getActiveDebugConfigurations() ) );
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performOk()
*/
public boolean performOk() {
CDebugCorePlugin.getDefault().saveDefaultDebugConfiguration( getDefault() );
List elements = fListField.getElements();
elements.removeAll( fListField.getCheckedElements() );
CDebugCorePlugin.getDefault().saveFilteredDebugConfigurations( (ICDebugConfiguration[])elements.toArray( new ICDebugConfiguration[elements.size()] ) );
return super.performOk();
}
protected String getDefault() {
return fDefault;
}
protected void setDefault( String defaultConfiguration ) {
fDefault = defaultConfiguration;
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
protected void performDefaults() {
fListField.setCheckedElements( Arrays.asList( CDebugCorePlugin.getDefault().getDefaultActiveDebugConfigurations() ) );
ICDebugConfiguration defaultConfiguration = CDebugCorePlugin.getDefault().getDefaultDefaultDebugConfiguration();
if ( defaultConfiguration != null ) {
setDefault( defaultConfiguration.getID() );
}
else {
List list = fListField.getCheckedElements();
if ( !list.isEmpty() ) {
setDefault( ((ICDebugConfiguration)list.get( 0 )).getID() );
}
}
fListField.refresh();
super.performDefaults();
}
}

View file

@ -24,3 +24,8 @@ CDebugPreferencePage.12=Maximum number of displayed instructions:
CDebugPreferencePage.13=The valid value range is [{0},{1}].
SourcePreferencePage.0=Common source lookup path settings.
SourcePreferencePage.0=Common S&ource Lookup Path:
DebuggerTypesPage.0=Select All
DebuggerTypesPage.1=Deselect All
DebuggerTypesPage.2=Default
DebuggerTypesPage.3=default
DebuggerTypesPage.4=Active debugger types:

View file

@ -1,3 +1,9 @@
2006-03-06 Mikhail Khodjaiants
Fix for Bug 93777: Postmortem and Local launch need a default preference for selected debugger.
* CApplicationLaunchShortcut.java
* CDebuggerTab.java
* CoreFileDebuggerTab.java
2006-02-27 Mikhail Khodjaiants
Fix for Bug 126025: CApplicationLaunchShortcut call to DebugUITools.saveAndBuild
invokes workspace wide build unnecessarily.

View file

@ -107,26 +107,38 @@ public class CApplicationLaunchShortcut implements ILaunchShortcut {
int candidateCount = candidateConfigs.size();
if (candidateCount < 1) {
String programCPU = bin.getCPU();
// Prompt the user if more then 1 debugger.
ICDebugConfiguration debugConfig = null;
ICDebugConfiguration[] debugConfigs = CDebugCorePlugin.getDefault().getDebugConfigurations();
List debugList = new ArrayList(debugConfigs.length);
// Try default debugger first
ICDebugConfiguration defaultConfig = CDebugCorePlugin.getDefault().getDefaultDebugConfiguration();
String os = Platform.getOS();
for (int i = 0; i < debugConfigs.length; i++) {
String platform = debugConfigs[i].getPlatform();
if (debugConfigs[i].supportsMode(ICDTLaunchConfigurationConstants.DEBUGGER_MODE_RUN)) {
ICDebugConfiguration debugConfig = null;
if ( defaultConfig != null ) {
String platform = defaultConfig.getPlatform();
if (defaultConfig.supportsMode(ICDTLaunchConfigurationConstants.DEBUGGER_MODE_RUN)) {
if (platform.equals("*") || platform.equals(os)) { //$NON-NLS-1$
if (debugConfigs[i].supportsCPU(programCPU))
debugList.add(debugConfigs[i]);
if (defaultConfig.supportsCPU(programCPU))
debugConfig = defaultConfig;
}
}
}
debugConfigs = (ICDebugConfiguration[]) debugList.toArray(new ICDebugConfiguration[0]);
if (debugConfigs.length == 1) {
debugConfig = debugConfigs[0];
} else if (debugConfigs.length > 1) {
debugConfig = chooseDebugConfig(debugConfigs, mode);
if ( debugConfig == null ) {
// Prompt the user if more then 1 debugger.
ICDebugConfiguration[] debugConfigs = CDebugCorePlugin.getDefault().getActiveDebugConfigurations();
List debugList = new ArrayList(debugConfigs.length);
for (int i = 0; i < debugConfigs.length; i++) {
String platform = debugConfigs[i].getPlatform();
if (debugConfigs[i].supportsMode(ICDTLaunchConfigurationConstants.DEBUGGER_MODE_RUN)) {
if (platform.equals("*") || platform.equals(os)) { //$NON-NLS-1$
if (debugConfigs[i].supportsCPU(programCPU))
debugList.add(debugConfigs[i]);
}
}
}
debugConfigs = (ICDebugConfiguration[]) debugList.toArray(new ICDebugConfiguration[0]);
if (debugConfigs.length == 1) {
debugConfig = debugConfigs[0];
} else if (debugConfigs.length > 1) {
debugConfig = chooseDebugConfig(debugConfigs, mode);
}
}
if (debugConfig != null) {
configuration = createConfiguration(bin, debugConfig);

View file

@ -151,7 +151,7 @@ public class CDebuggerTab extends AbstractCDebuggerTab {
protected void loadDebuggerComboBox(ILaunchConfiguration config, String selection) {
ICDebugConfiguration[] debugConfigs;
String configPlatform = getPlatform(config);
debugConfigs = CDebugCorePlugin.getDefault().getDebugConfigurations();
debugConfigs = CDebugCorePlugin.getDefault().getActiveDebugConfigurations();
Arrays.sort(debugConfigs, new Comparator() {
public int compare(Object o1, Object o2) {
@ -167,6 +167,11 @@ public class CDebuggerTab extends AbstractCDebuggerTab {
} else {
mode = ICDTLaunchConfigurationConstants.DEBUGGER_MODE_RUN;
}
if (selection.equals("")) { //$NON-NLS-1$
ICDebugConfiguration dc = CDebugCorePlugin.getDefault().getDefaultDebugConfiguration();
if (dc != null)
selection = dc.getID();
}
String defaultSelection = selection;
for (int i = 0; i < debugConfigs.length; i++) {
if (debugConfigs[i].supportsMode(mode)) {

View file

@ -127,8 +127,13 @@ public class CoreFileDebuggerTab extends AbstractCDebuggerTab {
}
protected void loadDebuggerComboBox(ILaunchConfiguration config, String selection) {
ICDebugConfiguration[] debugConfigs = CDebugCorePlugin.getDefault().getDebugConfigurations();
ICDebugConfiguration[] debugConfigs = CDebugCorePlugin.getDefault().getActiveDebugConfigurations();
String projectPlatform = getProjectPlatform(config);
if (selection.equals("")) { //$NON-NLS-1$
ICDebugConfiguration dc = CDebugCorePlugin.getDefault().getDefaultDebugConfiguration();
if (dc != null)
selection = dc.getID();
}
String defaultSelection = null;
List list = new ArrayList();
for (int i = 0; i < debugConfigs.length; i++) {
@ -138,7 +143,7 @@ public class CoreFileDebuggerTab extends AbstractCDebuggerTab {
// select first exact matching debugger for platform or
// requested selection
String debuggerPlatform = debugConfigs[i].getPlatform();
if (defaultSelection == null && debuggerPlatform.equalsIgnoreCase(projectPlatform)) {
if (defaultSelection == null && (debuggerPlatform.equals("*") || projectPlatform.equals( "*" ) || debuggerPlatform.equalsIgnoreCase(projectPlatform))) { //$NON-NLS-1$ //$NON-NLS-2$
defaultSelection = debugConfigs[i].getID();
}
}