mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
Support for cygwin debugger.
This commit is contained in:
parent
f8f4d2617f
commit
dc382d4604
8 changed files with 158 additions and 5 deletions
|
@ -1,3 +1,15 @@
|
||||||
|
2002-11-26 Doug Schaefer
|
||||||
|
|
||||||
|
* src/.../mi/core/CygwinGDBDebugger.java:
|
||||||
|
New Debugger that provides the Cygwin Command Factory to the MISession
|
||||||
|
* src/.../mi/core/command/CygwinCommandFactory.java:
|
||||||
|
New Command Factory for Cygwin specific implementations of the commands
|
||||||
|
* src/.../mi/core/command/CygwinMIEnvironmentDirectory.java:
|
||||||
|
New. Subclasses the MIEnvironmentDirectory command to convert the
|
||||||
|
paths using cygpath.
|
||||||
|
* plugin.xml:
|
||||||
|
Defines the new debugger extension.
|
||||||
|
|
||||||
2002-11-25 Alain Magloire
|
2002-11-25 Alain Magloire
|
||||||
|
|
||||||
* src/.../mi/core/cdi/Watchpoint.java:
|
* src/.../mi/core/cdi/Watchpoint.java:
|
||||||
|
|
|
@ -2,3 +2,4 @@ pluginName=C/C++ Development Tools GDB/MI CDI Debugger Core
|
||||||
providerName=Eclipse.org
|
providerName=Eclipse.org
|
||||||
|
|
||||||
GDBDebugger.name=GDB Debugger
|
GDBDebugger.name=GDB Debugger
|
||||||
|
CygwinGDBDebugger.name=Cygwin GDB Debugger
|
|
@ -18,16 +18,23 @@
|
||||||
<import plugin="org.eclipse.cdt.core"/>
|
<import plugin="org.eclipse.cdt.core"/>
|
||||||
</requires>
|
</requires>
|
||||||
|
|
||||||
|
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.cdt.debug.core.CDebugger">
|
point="org.eclipse.cdt.debug.core.CDebugger">
|
||||||
<debugger
|
<debugger
|
||||||
|
platform="native"
|
||||||
name="%GDBDebugger.name"
|
name="%GDBDebugger.name"
|
||||||
modes="run,core,attach"
|
modes="run,core,attach"
|
||||||
class="org.eclipse.cdt.debug.mi.core.GDBDebugger"
|
|
||||||
id="org.eclipse.cdt.debug.mi.core.CDebugger"
|
|
||||||
cpu="native"
|
cpu="native"
|
||||||
platform="native">
|
class="org.eclipse.cdt.debug.mi.core.GDBDebugger"
|
||||||
|
id="org.eclipse.cdt.debug.mi.core.CDebugger">
|
||||||
|
</debugger>
|
||||||
|
<debugger
|
||||||
|
platform="win32"
|
||||||
|
name="%CygwinGDBDebugger.name"
|
||||||
|
modes="run,core,attach"
|
||||||
|
cpu="native"
|
||||||
|
class="org.eclipse.cdt.debug.mi.core.CygwinGDBDebugger"
|
||||||
|
id="org.eclipse.cdt.debug.mi.core.CygwinCDebugger">
|
||||||
</debugger>
|
</debugger>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* (c) Copyright Rational Software Corporation. 2002.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.debug.mi.core;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.ICDISession;
|
||||||
|
import org.eclipse.cdt.debug.mi.core.cdi.CSession;
|
||||||
|
import org.eclipse.cdt.debug.mi.core.command.CygwinCommandFactory;
|
||||||
|
import org.eclipse.core.resources.IFile;
|
||||||
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
import org.eclipse.debug.core.ILaunchConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Doug Schaefer
|
||||||
|
*
|
||||||
|
* Cygwin GDB Debugger overrides the GDB Debugger to apply the Cygwin
|
||||||
|
* Command Factory to the MI Session.
|
||||||
|
*/
|
||||||
|
public class CygwinGDBDebugger extends GDBDebugger {
|
||||||
|
|
||||||
|
static final CygwinCommandFactory commandFactory =
|
||||||
|
new CygwinCommandFactory();
|
||||||
|
|
||||||
|
public ICDISession createLaunchSession(
|
||||||
|
ILaunchConfiguration config,
|
||||||
|
IFile exe)
|
||||||
|
throws CDIException {
|
||||||
|
CSession session = (CSession) super.createLaunchSession(config, exe);
|
||||||
|
session.getMISession().setCommandFactory(commandFactory);
|
||||||
|
return session;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICDISession createAttachSession(
|
||||||
|
ILaunchConfiguration config,
|
||||||
|
IFile exe,
|
||||||
|
int pid)
|
||||||
|
throws CDIException {
|
||||||
|
CSession session =
|
||||||
|
(CSession) super.createAttachSession(config, exe, pid);
|
||||||
|
session.getMISession().setCommandFactory(commandFactory);
|
||||||
|
return session;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICDISession createCoreSession(
|
||||||
|
ILaunchConfiguration config,
|
||||||
|
IFile exe,
|
||||||
|
IPath corefile)
|
||||||
|
throws CDIException {
|
||||||
|
CSession session =
|
||||||
|
(CSession) super.createCoreSession(config, exe, corefile);
|
||||||
|
session.getMISession().setCommandFactory(commandFactory);
|
||||||
|
return session;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
*(c) Copyright Rational Software Corporation, 2002
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.debug.mi.core.command;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Doug Schaefer
|
||||||
|
*
|
||||||
|
* Cygwin Command Factory overrides the regular Command Factory to allow for
|
||||||
|
* commands to take into account the cygwin environment.
|
||||||
|
*/
|
||||||
|
public class CygwinCommandFactory extends CommandFactory {
|
||||||
|
|
||||||
|
public MIEnvironmentDirectory createMIEnvironmentDirectory(String[] pathdirs) {
|
||||||
|
return new CygwinMIEnvironmentDirectory(pathdirs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
*(c) Copyright Rational Software Corporation, 2002
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.debug.mi.core.command;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.CommandLauncher;
|
||||||
|
import org.eclipse.core.runtime.Path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Doug Schaefer
|
||||||
|
*
|
||||||
|
* Cygwin implementation of the MIEnvironmentDirectory command. In the cygwin
|
||||||
|
* environment, the paths are DOS paths and need to be converted to cygwin
|
||||||
|
* style paths before passing them to gdb.
|
||||||
|
*/
|
||||||
|
public class CygwinMIEnvironmentDirectory extends MIEnvironmentDirectory {
|
||||||
|
|
||||||
|
CygwinMIEnvironmentDirectory(String[] paths) {
|
||||||
|
super(paths);
|
||||||
|
|
||||||
|
String[] newpaths = new String[paths.length];
|
||||||
|
for (int i = 0; i < paths.length; i++) {
|
||||||
|
// Use the cygpath utility to convert the path
|
||||||
|
CommandLauncher launcher = new CommandLauncher();
|
||||||
|
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
launcher.execute(
|
||||||
|
new Path("cygpath"),
|
||||||
|
new String[] { paths[i] },
|
||||||
|
new String[0],
|
||||||
|
new Path("."));
|
||||||
|
if (launcher.waitAndRead(output, output) != CommandLauncher.OK)
|
||||||
|
newpaths[i] = paths[i];
|
||||||
|
else
|
||||||
|
newpaths[i] = output.toString().trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
setParameters(newpaths);
|
||||||
|
}
|
||||||
|
}
|
4
debug/org.eclipse.cdt.debug.mi.ui/ChangeLog
Normal file
4
debug/org.eclipse.cdt.debug.mi.ui/ChangeLog
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
2002-11-26 Doug Schaefer
|
||||||
|
|
||||||
|
* plugin.xml:
|
||||||
|
Added new debugPage for Cygwin GDB.
|
|
@ -31,7 +31,13 @@
|
||||||
id="org.eclipse.cdt.debug.mi.CDebuggerPage"
|
id="org.eclipse.cdt.debug.mi.CDebuggerPage"
|
||||||
debuggerID="org.eclipse.cdt.debug.mi.core.CDebugger">
|
debuggerID="org.eclipse.cdt.debug.mi.core.CDebugger">
|
||||||
</debugPage>
|
</debugPage>
|
||||||
|
<debugPage
|
||||||
|
class="org.eclipse.cdt.debug.mi.internal.ui.CDebuggerPage"
|
||||||
|
id="org.eclipse.cdt.debug.mi.CygwinCDebuggerPage"
|
||||||
|
debuggerID="org.eclipse.cdt.debug.mi.core.CygwinCDebugger">
|
||||||
|
</debugPage>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.preferencePages">
|
point="org.eclipse.ui.preferencePages">
|
||||||
<page
|
<page
|
||||||
|
|
Loading…
Add table
Reference in a new issue