<!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 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>

<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>
