mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 339550: Allow to override GdbLaunch
This commit is contained in:
parent
c118acdaa6
commit
0d2872027c
1 changed files with 46 additions and 6 deletions
|
@ -11,6 +11,7 @@
|
||||||
* IBM Corporation
|
* IBM Corporation
|
||||||
* Ericsson - Added support for Mac OS
|
* Ericsson - Added support for Mac OS
|
||||||
* Ericsson - Added support for post-mortem trace files
|
* Ericsson - Added support for post-mortem trace files
|
||||||
|
* Abeer Bagul (Tensilica) - Allow to better override GdbLaunch (bug 339550)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.dsf.gdb.launching;
|
package org.eclipse.cdt.dsf.gdb.launching;
|
||||||
|
|
||||||
|
@ -133,6 +134,9 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2
|
||||||
|
|
||||||
monitor.worked( 1 );
|
monitor.worked( 1 );
|
||||||
|
|
||||||
|
fIsNonStopSession = LaunchUtils.getIsNonStopMode(config);
|
||||||
|
fIsPostMortemTracingSession = LaunchUtils.getIsPostMortemTracing(config);
|
||||||
|
|
||||||
String gdbVersion = getGDBVersion(config);
|
String gdbVersion = getGDBVersion(config);
|
||||||
|
|
||||||
// First make sure non-stop is supported, if the user want to use this mode
|
// First make sure non-stop is supported, if the user want to use this mode
|
||||||
|
@ -280,17 +284,38 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2
|
||||||
// the adapters will be created for the whole session, including
|
// the adapters will be created for the whole session, including
|
||||||
// the source lookup adapter.
|
// the source lookup adapter.
|
||||||
|
|
||||||
fIsNonStopSession = LaunchUtils.getIsNonStopMode(configuration);
|
GdbLaunch launch = createGdbLaunch(configuration, mode, null);
|
||||||
fIsPostMortemTracingSession = LaunchUtils.getIsPostMortemTracing(configuration);
|
|
||||||
|
|
||||||
GdbLaunch launch = new GdbLaunch(configuration, mode, null);
|
|
||||||
launch.initialize();
|
launch.initialize();
|
||||||
launch.setSourceLocator(getSourceLocator(configuration, launch.getSession()));
|
launch.setSourceLocator(getSourceLocator(configuration, launch.getSession()));
|
||||||
return launch;
|
return launch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an object of GdbLaunch.
|
||||||
|
* Subclasses who wish to just replace the GdbLaunch object with a sub-classed GdbLaunch
|
||||||
|
* should override this method.
|
||||||
|
* Subclasses who wish to replace the GdbLaunch object as well as change the
|
||||||
|
* initialization sequence of the launch, should override getLaunch() as well as this method.
|
||||||
|
* Subclasses who wish to create a launch class which does not subclass GdbLaunch,
|
||||||
|
* are advised to override getLaunch() directly.
|
||||||
|
*
|
||||||
|
* @param configuration The launch configuration
|
||||||
|
* @param mode The launch mode - "run", "debug", "profile"
|
||||||
|
* @param locator The source locator. Can be null.
|
||||||
|
* @return The GdbLaunch object, or a sub-classed object
|
||||||
|
* @throws CoreException
|
||||||
|
* @since 4.1
|
||||||
|
*/
|
||||||
|
protected GdbLaunch createGdbLaunch(ILaunchConfiguration configuration, String mode, ISourceLocator locator) throws CoreException {
|
||||||
|
return new GdbLaunch(configuration, mode, locator);
|
||||||
|
}
|
||||||
|
|
||||||
private ISourceLocator getSourceLocator(ILaunchConfiguration configuration, DsfSession session) throws CoreException {
|
/**
|
||||||
DsfSourceLookupDirector locator = new DsfSourceLookupDirector(session);
|
* Creates and initializes the source locator for the given launch configuration and dsf session.
|
||||||
|
* @since 4.1
|
||||||
|
*/
|
||||||
|
protected ISourceLocator getSourceLocator(ILaunchConfiguration configuration, DsfSession session) throws CoreException {
|
||||||
|
DsfSourceLookupDirector locator = createDsfSourceLocator(configuration, session);
|
||||||
String memento = configuration.getAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_MEMENTO, (String)null);
|
String memento = configuration.getAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_MEMENTO, (String)null);
|
||||||
if (memento == null) {
|
if (memento == null) {
|
||||||
locator.initializeDefaults(configuration);
|
locator.initializeDefaults(configuration);
|
||||||
|
@ -299,6 +324,21 @@ public class GdbLaunchDelegate extends AbstractCLaunchDelegate2
|
||||||
}
|
}
|
||||||
return locator;
|
return locator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an object of DsfSourceLookupDirector with the given DsfSession.
|
||||||
|
* Subclasses who wish to just replace the source locator object with a sub-classed source locator
|
||||||
|
* should override this method.
|
||||||
|
* Subclasses who wish to replace the source locator object as well as change the
|
||||||
|
* initialization sequence of the source locator, should override getSourceLocator()
|
||||||
|
* as well as this method.
|
||||||
|
* Subclasses who wish to create a source locator which does not subclass DsfSourceLookupDirector,
|
||||||
|
* are advised to override getSourceLocator() directly.
|
||||||
|
* @since 4.1
|
||||||
|
*/
|
||||||
|
protected DsfSourceLookupDirector createDsfSourceLocator(ILaunchConfiguration configuration, DsfSession session) throws CoreException {
|
||||||
|
return new DsfSourceLookupDirector(session);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the specified version of GDB supports
|
* Returns true if the specified version of GDB supports
|
||||||
|
|
Loading…
Add table
Reference in a new issue