<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Eclipse Debug Platform</title>
</head>

<body bgcolor="#FFFFFF">

<p>Provides support for launching programs, breakpoint management, expression management,
and debug events.</p>

<h2>Package Specification</h2>

<p>This package provides classes and interfaces to support facilities common among 
  many debug architectures: launching programs, breakpoint management, expression 
  management, and debug events. An extensible set of debug architectures and languages 
  are supported by the definition of a &quot;debug model&quot; - a set of interfaces 
  representing common artifacts in debuggable programs, which are defined in <b>org.eclipse.debug.core.model</b>. 
  The debug plug-in itself does not provide any implementations of a debug model. 
  It is intended that third parties providing an integrated set of development 
  tools for a specific language will also implement a debug model for that language, 
  using an underlying debug architecture of their choice. For example, Java development 
  tooling provides an implementation of a debug model based on the standard Java 
  Platform Debug Architecture (JPDA).</p>

<h4>The Managers</h4>

<p>The debug platform defines and provides an implementation of the following managers:
<ul>
 <li>Launch Manager - The launch manager maintains the set of registered launches - that is,
 	a collection of programs that have been launched in debuggable or non-debuggable (run) mode.
 	Each launch maintains its associated debug targets and system processes. A launch that
 	represents a debuggable program may specify an associated source locator used to locate
 	source elements associated with stack frames for a particular debug session. Clients must
 	provide implementations of source locators, which are generally tied to the manner in which
 	a program is launched.</li>
 <li>Breakpoint Manager - The breakpoint manager maintains, persists, and restores the collection
    of all registered breakpoints in the workspace. As well, it provides change notification for
    breakpoints.</li>
 <li>Expression Manager - The expression manager maintains a collection of registered expressions.
    Expressions are not automatically persisted, but a client could persist its own expressions
    if required.</li>
</ul>
<p></p>

<h4>Launch Configurations</h4>

<p>A launch configuration is a persistable description of how to launch an application.
 Each launch configuration is an instance of a type of launch configuration - for example,
 a Java Application. The debug plug-in defines a launch configuration type extension point
 such that clients may define launch configurations specific to their debug architecture.
 A launch configuration is simply a set of attributes describing how to launch a program.
 The actual launching of an application is performed
 by an associated implementation of a launch configuration delegate, which is specifed by each launch configuration
 type extension.</p>
<p>A launch configuration may be stored as a file in the worksapce (and shared in a repository via
 standard team mechanisms), or may be stored locally, essentially making the launch configuration
 private for a single user.</p>


</body>
</html>
