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

[248593] Fixed launch for JTag to support DSF-GDB

This commit is contained in:
Marc Khouzam 2010-03-16 15:34:08 +00:00
parent 7b1257ab5c
commit 3bc232083d
11 changed files with 544 additions and 27 deletions

View file

@ -18,4 +18,3 @@ Eclipse-LazyStart: true
Export-Package: org.eclipse.cdt.debug.gdbjtag.core, Export-Package: org.eclipse.cdt.debug.gdbjtag.core,
org.eclipse.cdt.debug.gdbjtag.core.jtagdevice org.eclipse.cdt.debug.gdbjtag.core.jtagdevice
Bundle-Vendor: %providerName Bundle-Vendor: %providerName
Import-Package: com.ibm.icu.text

View file

@ -5,22 +5,27 @@
<extension <extension
point="org.eclipse.debug.core.launchConfigurationTypes"> point="org.eclipse.debug.core.launchConfigurationTypes">
<launchConfigurationType <launchConfigurationType
delegate="org.eclipse.cdt.debug.gdbjtag.core.GDBJtagLaunchConfigurationDelegate"
delegateDescription="%launchDelegate.jtag.description"
delegateName="%launchDelegate.jtag.name"
id="org.eclipse.cdt.debug.gdbjtag.launchConfigurationType" id="org.eclipse.cdt.debug.gdbjtag.launchConfigurationType"
modes="debug" modes="debug"
name="%launchConfig.name" name="%launchConfig.name"
public="true" public="true"/>
sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"/>
</extension> </extension>
<extension <extension
point="org.eclipse.debug.core.launchDelegates"> point="org.eclipse.debug.core.launchDelegates">
<launchDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.GDBJtagLaunchConfigurationDelegate"
delegateDescription="%launchDelegate.jtag.description"
id="org.eclipse.cdt.debug.gdbjtag.core.cdiLaunchDelegate"
modes="debug"
name="%launchDelegate.jtag.name"
sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"
type="org.eclipse.cdt.debug.gdbjtag.launchConfigurationType">
</launchDelegate>
<launchDelegate <launchDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.GDBJtagDSFLaunchConfigurationDelegate" delegate="org.eclipse.cdt.debug.gdbjtag.core.GDBJtagDSFLaunchConfigurationDelegate"
delegateDescription="%launchDelegate.jtagDsf.description" delegateDescription="%launchDelegate.jtagDsf.description"
id="org.eclipse.cdt.dsf.gdb.launch.jtagCLaunch" id="org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate"
modes="debug" modes="debug"
name="%launchDelegate.jtagDsf.name" name="%launchDelegate.jtagDsf.name"
sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator" sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"

View file

@ -8,16 +8,14 @@ Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui, Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime, org.eclipse.core.runtime,
org.eclipse.debug.ui, org.eclipse.debug.ui,
org.eclipse.debug.core,
org.eclipse.cdt.launch, org.eclipse.cdt.launch,
org.eclipse.cdt.ui,
org.eclipse.cdt.debug.mi.core, org.eclipse.cdt.debug.mi.core,
org.eclipse.cdt.debug.gdbjtag.core, org.eclipse.cdt.debug.gdbjtag.core,
org.eclipse.core.variables, org.eclipse.core.variables,
org.eclipse.cdt.managedbuilder.ui,
org.eclipse.ui.ide, org.eclipse.ui.ide,
org.eclipse.cdt.debug.core, org.eclipse.cdt.debug.core,
org.eclipse.cdt.dsf.gdb org.eclipse.cdt.dsf.gdb,
org.eclipse.cdt.dsf.gdb.ui
Eclipse-LazyStart: true Eclipse-LazyStart: true
Bundle-Vendor: %providerName Bundle-Vendor: %providerName
Export-Package: org.eclipse.cdt.debug.gdbjtag.ui Export-Package: org.eclipse.cdt.debug.gdbjtag.ui

View file

@ -15,3 +15,9 @@ providerName=Eclipse CDT
AbatronBDI2000.name=Abatron BDI2000 AbatronBDI2000.name=Abatron BDI2000
MacraigorUsb2Demon.name=Macraigor USB2Demon MacraigorUsb2Demon.name=Macraigor USB2Demon
Generic.name=Generic Generic.name=Generic
launchtab.cmaintab.name=Main
launchtab.debuggertab.name=Debugger
launchtab.startuptab.name=Startup
launchTab.sourceLookup.name=Source
launchTab.common.name=Common

View file

@ -39,5 +39,122 @@
name="%MacraigorUsb2Demon.name"> name="%MacraigorUsb2Demon.name">
</device> </device>
</extension> </extension>
<extension
point="org.eclipse.debug.ui.launchConfigurationTabs">
<tab
class="org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagCDICMainTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.cmaintab.cdi"
name="%launchtab.cmaintab.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.cdiLaunchDelegate">
</associatedDelegate>
</tab>
<tab
class="org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagDebuggerTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.cdi"
name="%launchtab.debuggertab.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.cdiLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.cdt.cdi.launch.mainTab">
</placement>
</tab>
<tab
class="org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagStartupTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.startuptab.cdi"
name="%launchtab.startuptab.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.cdiLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.cdi">
</placement>
</tab>
<tab
class="org.eclipse.debug.ui.sourcelookup.SourceLookupTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.sourcelookuptab.cdi"
name="%launchTab.sourceLookup.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.cdiLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.cdt.debug.gdbjtag.ui.startuptab">
</placement>
</tab>
<tab
class="org.eclipse.debug.ui.CommonTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.commontab.cdi"
name="%launchTab.common.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.cdiLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.debug.ui.sourceLookupTab">
</placement>
</tab>
<tab
class="org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagDSFCMainTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.cmaintab.dsf"
name="%launchtab.cmaintab.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate">
</associatedDelegate>
</tab>
<tab
class="org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagDSFDebuggerTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.dsf"
name="%launchtab.debuggertab.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.cdt.dsf.gdb.launch.mainTab">
</placement>
</tab>
<tab
class="org.eclipse.cdt.debug.gdbjtag.ui.GDBJtagStartupTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.startuptab.dsf"
name="%launchtab.startuptab.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.dsf">
</placement>
</tab>
<tab
class="org.eclipse.debug.ui.sourcelookup.SourceLookupTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.sourcelookuptab.dsf"
name="%launchTab.sourceLookup.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.cdt.debug.gdbjtag.ui.startuptab">
</placement>
</tab>
<tab
class="org.eclipse.debug.ui.CommonTab"
group="org.eclipse.cdt.debug.gdbjtag.launchConfigurationTabGroup"
id="org.eclipse.cdt.debug.gdbjtag.ui.commontab.dsf"
name="%launchTab.common.name">
<associatedDelegate
delegate="org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate">
</associatedDelegate>
<placement
after="org.eclipse.debug.ui.sourceLookupTab">
</placement>
</tab>
</extension>
</plugin> </plugin>

View file

@ -0,0 +1,21 @@
/*******************************************************************************
* Copyright (c) 2007 - 2010 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 implementation
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.ui;
import org.eclipse.cdt.launch.ui.CMainTab;
public class GDBJtagCDICMainTab extends CMainTab {
public GDBJtagCDICMainTab() {
super(CMainTab.DONT_CHECK_PROGRAM);
}
}

View file

@ -0,0 +1,42 @@
/*******************************************************************************
* Copyright (c) 2007 - 2010 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 implementation
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.ui;
import java.util.HashSet;
import org.eclipse.cdt.dsf.gdb.internal.ui.launching.CMainTab;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchDelegate;
public class GDBJtagDSFCMainTab extends CMainTab {
public GDBJtagDSFCMainTab() {
super(CMainTab.DONT_CHECK_PROGRAM | CMainTab.INCLUDE_BUILD_SETTINGS);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.dsf.gdb.internal.ui.launching.CMainTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
*/
@Override
public void setDefaults(ILaunchConfigurationWorkingCopy config) {
super.setDefaults(config);
HashSet<String> set = new HashSet<String>();
set.add(getLaunchConfigurationDialog().getMode());
try {
ILaunchDelegate preferredDelegate = config.getPreferredDelegate(set);
if (preferredDelegate == null) {
config.setPreferredLaunchDelegate(set, "org.eclipse.cdt.debug.gdbjtag.core.dsfLaunchDelegate"); //$NON-NLS-1$
}
} catch (CoreException e) {}
}
}

View file

@ -0,0 +1,318 @@
/*******************************************************************************
* Copyright (c) 2007 - 2010 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 implementation
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.ui;
import java.io.File;
import org.eclipse.cdt.debug.gdbjtag.core.Activator;
import org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConstants;
import org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.GDBJtagDeviceContribution;
import org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.GDBJtagDeviceContributionFactory;
import org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.IGDBJtagDevice;
import org.eclipse.cdt.debug.mi.core.IMILaunchConfigurationConstants;
import org.eclipse.cdt.debug.mi.core.MIPlugin;
import org.eclipse.cdt.debug.mi.core.command.factories.CommandFactoryDescriptor;
import org.eclipse.cdt.debug.mi.core.command.factories.CommandFactoryManager;
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.debug.ui.StringVariableSelectionDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.graphics.Image;
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.FileDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
public class GDBJtagDSFDebuggerTab extends AbstractLaunchConfigurationTab {
private static final String TAB_NAME = "Debugger";
private static final String TAB_ID = "org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.dsf";
private Text gdbCommand;
private Button useRemote;
private Text ipAddress;
private Text portNumber;
private Combo jtagDevice;
private String savedJtagDevice;
public String getName() {
return TAB_NAME;
}
public Image getImage() {
return GDBJtagImages.getDebuggerTabImage();
}
public void createControl(Composite parent) {
ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
setControl(sc);
Composite comp = new Composite(sc, SWT.NONE);
sc.setContent(comp);
GridLayout layout = new GridLayout();
comp.setLayout(layout);
Group group = new Group(comp, SWT.NONE);
layout = new GridLayout();
group.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(gd);
group.setText(Messages.getString("GDBJtagDebuggerTab.gdbSetupGroup_Text"));
createCommandControl(group);
createRemoteControl(comp);
}
private void browseButtonSelected(String title, Text text) {
FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
dialog.setText(title);
String str = text.getText().trim();
int lastSeparatorIndex = str.lastIndexOf(File.separator);
if (lastSeparatorIndex != -1)
dialog.setFilterPath(str.substring(0, lastSeparatorIndex));
str = dialog.open();
if (str != null)
text.setText(str);
}
private void variablesButtonSelected(Text text) {
StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(
getShell());
if (dialog.open() == StringVariableSelectionDialog.OK) {
text.append(dialog.getVariableExpression());
}
}
private void createCommandControl(Composite parent) {
Composite comp = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
comp.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 1;
comp.setLayoutData(gd);
Label label = new Label(comp, SWT.NONE);
label.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandLabel"));
gd = new GridData();
gd.horizontalSpan = 3;
label.setLayoutData(gd);
gdbCommand = new Text(comp, SWT.SINGLE | SWT.BORDER);
gd = new GridData(GridData.FILL_HORIZONTAL);
gdbCommand.setLayoutData(gd);
gdbCommand.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
updateLaunchConfigurationDialog();
}
});
Button button = new Button(comp, SWT.NONE);
button.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandBrowse"));
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
browseButtonSelected(Messages.getString("GDBJtagDebuggerTab.gdbCommandBrowse_Title"), gdbCommand);
}
});
button = new Button(comp, SWT.NONE);
button.setText(Messages.getString("GDBJtagDebuggerTab.gdbCommandVariable"));
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
variablesButtonSelected(gdbCommand);
}
});
}
private void createRemoteControl(Composite parent) {
Group group = new Group(parent, SWT.NONE);
GridLayout layout = new GridLayout();
group.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(gd);
group.setText(Messages.getString("GDBJtagDebuggerTab.remoteGroup_Text"));
useRemote = new Button(group, SWT.CHECK);
useRemote.setText(Messages.getString("GDBJtagDebuggerTab.useRemote_Text"));
useRemote.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
useRemoteChanged();
updateLaunchConfigurationDialog();
}
});
Composite comp = new Composite(group, SWT.NONE);
layout = new GridLayout();
layout.numColumns = 2;
comp.setLayout(layout);
Label label = new Label(comp, SWT.NONE);
label.setText(Messages.getString("GDBJtagDebuggerTab.jtagDeviceLabel"));
jtagDevice = new Combo(comp, SWT.READ_ONLY | SWT.DROP_DOWN);
GDBJtagDeviceContribution[] availableDevices = GDBJtagDeviceContributionFactory.
getInstance().getGDBJtagDeviceContribution();
for (int i = 0; i < availableDevices.length; i++) {
jtagDevice.add(availableDevices[i].getDeviceName());
}
jtagDevice.select(0);
jtagDevice.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
updateDeviceIpPort(jtagDevice.getText());
updateLaunchConfigurationDialog();
}
});
label = new Label(comp, SWT.NONE);
label.setText(Messages.getString("GDBJtagDebuggerTab.ipAddressLabel"));
ipAddress = new Text(comp, SWT.BORDER);
gd = new GridData();
gd.widthHint = 100;
ipAddress.setLayoutData(gd);
ipAddress.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
updateLaunchConfigurationDialog();
}
});
label = new Label(comp, SWT.NONE);
label.setText(Messages.getString("GDBJtagDebuggerTab.portNumberLabel"));
portNumber = new Text(comp, SWT.BORDER);
gd = new GridData();
gd.widthHint = 100;
portNumber.setLayoutData(gd);
portNumber.addVerifyListener(new VerifyListener() {
public void verifyText(VerifyEvent e) {
e.doit = Character.isDigit(e.character) || Character.isISOControl(e.character);
}
});
portNumber.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
updateLaunchConfigurationDialog();
}
});
}
/**
* @param text
*/
protected void updateDeviceIpPort(String selectedDeviceName) {
if (selectedDeviceName.equals(savedJtagDevice)) {
return;
}
GDBJtagDeviceContribution[] availableDevices = GDBJtagDeviceContributionFactory.getInstance()
.getGDBJtagDeviceContribution();
IGDBJtagDevice selectedDevice = null;
for (int i = 0; i < availableDevices.length; i++) {
String name = availableDevices[i].getDeviceName();
if (name.equals(selectedDeviceName)) {
selectedDevice = availableDevices[i].getDevice();
if (selectedDevice != null) {
String ip = selectedDevice.getDefaultIpAddress();
ipAddress.setText(ip);
String port = selectedDevice.getDefaultPortNumber();
portNumber.setText(port);
updateLaunchConfigurationDialog();
break;
}
}
}
}
private void useRemoteChanged() {
boolean enabled = useRemote.getSelection();
jtagDevice.setEnabled(enabled);
ipAddress.setEnabled(enabled);
portNumber.setEnabled(enabled);
}
public void initializeFrom(ILaunchConfiguration configuration) {
try {
String gdbCommandAttr = configuration.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, IMILaunchConfigurationConstants.DEBUGGER_DEBUG_NAME_DEFAULT);
gdbCommand.setText(gdbCommandAttr);
boolean useRemoteAttr = configuration.getAttribute(IGDBJtagConstants.ATTR_USE_REMOTE_TARGET, IGDBJtagConstants.DEFAULT_USE_REMOTE_TARGET);
useRemote.setSelection(useRemoteAttr);
useRemoteChanged();
String ipAddressAttr = configuration.getAttribute(IGDBJtagConstants.ATTR_IP_ADDRESS, IGDBJtagConstants.DEFAULT_IP_ADDRESS);
ipAddress.setText(ipAddressAttr);
int portNumberAttr = configuration.getAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, IGDBJtagConstants.DEFAULT_PORT_NUMBER);
portNumber.setText(String.valueOf(portNumberAttr));
savedJtagDevice = configuration.getAttribute(IGDBJtagConstants.ATTR_JTAG_DEVICE, "");
for (int i = 0; i < jtagDevice.getItemCount(); i++) {
if (jtagDevice.getItem(i).equals(savedJtagDevice)) {
jtagDevice.select(i);
}
}
} catch (CoreException e) {
Activator.getDefault().getLog().log(e.getStatus());
}
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getId()
*/
@Override
public String getId() {
return TAB_ID;
}
public void performApply(ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, gdbCommand.getText().trim());
configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUG_NAME, gdbCommand.getText().trim()); // DSF
savedJtagDevice = jtagDevice.getText();
configuration.setAttribute(IGDBJtagConstants.ATTR_JTAG_DEVICE, savedJtagDevice);
configuration.setAttribute(IGDBJtagConstants.ATTR_USE_REMOTE_TARGET, useRemote.getSelection());
configuration.setAttribute(IGDBJtagConstants.ATTR_IP_ADDRESS, ipAddress.getText().trim());
try {
configuration.setAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, Integer.parseInt(portNumber.getText().trim()));
} catch (NumberFormatException e) {
configuration.setAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, 0);
}
}
public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, IMILaunchConfigurationConstants.DEBUGGER_DEBUG_NAME_DEFAULT);
CommandFactoryManager cfManager = MIPlugin.getDefault().getCommandFactoryManager();
CommandFactoryDescriptor defDesc = cfManager.getDefaultDescriptor(IGDBJtagConstants.DEBUGGER_ID);
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_COMMAND_FACTORY, defDesc.getName());
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_PROTOCOL, defDesc.getMIVersions()[0]);
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_VERBOSE_MODE, IMILaunchConfigurationConstants.DEBUGGER_VERBOSE_MODE_DEFAULT);
configuration.setAttribute(IGDBJtagConstants.ATTR_USE_REMOTE_TARGET, IGDBJtagConstants.DEFAULT_USE_REMOTE_TARGET);
configuration.setAttribute(IGDBJtagConstants.ATTR_IP_ADDRESS, IGDBJtagConstants.DEFAULT_IP_ADDRESS);
configuration.setAttribute(IGDBJtagConstants.ATTR_PORT_NUMBER, IGDBJtagConstants.DEFAULT_PORT_NUMBER);
}
}

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007 - 2008 QNX Software Systems and others. * Copyright (c) 2007 - 2010 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -57,7 +57,8 @@ import org.eclipse.swt.widgets.Text;
public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab { public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
private static final String TAB_NAME = "Debugger"; private static final String TAB_NAME = "Debugger";
private static final String TAB_ID = "org.eclipse.cdt.debug.gdbjtag.ui.debuggertab.cdi";
private CommandFactoryDescriptor[] cfDescs; private CommandFactoryDescriptor[] cfDescs;
private Text gdbCommand; private Text gdbCommand;
@ -386,6 +387,14 @@ public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
} }
} }
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getId()
*/
@Override
public String getId() {
return TAB_ID;
}
public void performApply(ILaunchConfigurationWorkingCopy configuration) { public void performApply(ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, gdbCommand.getText().trim()); configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, gdbCommand.getText().trim());

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007 QNX Software Systems and others. * Copyright (c) 2007 - 2010 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -7,16 +7,14 @@
* *
* Contributors: * Contributors:
* QNX Software Systems - Initial API and implementation * QNX Software Systems - Initial API and implementation
* Andy Jin - Changes to hold tab contributions from extension, bug 248593
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.ui; package org.eclipse.cdt.debug.gdbjtag.ui;
import org.eclipse.cdt.launch.ui.CMainTab;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup; import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
import org.eclipse.debug.ui.CommonTab;
import org.eclipse.debug.ui.ILaunchConfigurationDialog; import org.eclipse.debug.ui.ILaunchConfigurationDialog;
import org.eclipse.debug.ui.ILaunchConfigurationTab; import org.eclipse.debug.ui.ILaunchConfigurationTab;
import org.eclipse.debug.ui.sourcelookup.SourceLookupTab;
/** /**
* @author Doug Schaefer * @author Doug Schaefer
@ -26,14 +24,7 @@ public class GDBJtagLaunchConfigurationTabGroup extends
AbstractLaunchConfigurationTabGroup { AbstractLaunchConfigurationTabGroup {
public void createTabs(ILaunchConfigurationDialog dialog, String mode) { public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] { setTabs(new ILaunchConfigurationTab[0]);
new CMainTab(CMainTab.DONT_CHECK_PROGRAM),
new GDBJtagDebuggerTab(),
new GDBJtagStartupTab(),
new SourceLookupTab(),
new CommonTab()
};
setTabs(tabs);
} }
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007 - 2008 QNX Software Systems and others. * Copyright (c) 2007 - 2010 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -8,6 +8,7 @@
* Contributors: * Contributors:
* QNX Software Systems - Initial API and implementation * QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946 * Andy Jin - Hardware debugging UI improvements, bug 229946
* Andy Jin - Added DSF debugging, bug 248593
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.ui; package org.eclipse.cdt.debug.gdbjtag.ui;
@ -51,6 +52,7 @@ import org.eclipse.ui.views.navigator.ResourceComparator;
public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab { public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
private static final String TAB_NAME = "Startup"; private static final String TAB_NAME = "Startup";
private static final String TAB_ID = "org.eclipse.cdt.debug.gdbjtag.ui.startuptab";
Text initCommands; Text initCommands;
Text delay; Text delay;
@ -65,6 +67,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
Button loadSymbols; Button loadSymbols;
Text symbolsFileName; Text symbolsFileName;
Button symbolsFileBrowseWs; Button symbolsFileBrowseWs;
Button symbolsFileBrowse; Button symbolsFileBrowse;
Text symbolsOffset; Text symbolsOffset;
@ -528,6 +531,14 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
return true; return true;
} }
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getId()
*/
@Override
public String getId() {
return TAB_ID;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#updateLaunchConfigurationDialog() * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#updateLaunchConfigurationDialog()
*/ */