Platform Debug 3.2 Release Plan

Overall 3.2 Plan

Overall Themes for Platform Debug:

  • Scaling Up
  • Design for Extensibility: Be a Better Platform
  • Simple to Use
item is deferred item is under development item is finished

Potential Work Items

Additional breakpoint management enhancements - The debug platform provides ways to manage large numbers of breakpoints via groupings and working sets to allow efficient enabling and disabling logical sets of related breakpoints. Additional features would be helpful:
  • Import and export of breakpoints: allow breakpoints to be shared between users and persisted for later use.
  • B reakpoint working sets and launch configurations: allow breakpoint working sets to be associated with launch configurations for automatic enabling/disabling when launching
Increased flexibility and control for debug providers - The debug support in Eclipse is increasingly being used in areas that require more flexible mechanisms than those required by simple Java programs. Potential areas of work and investigation include:
  • Flow control: provide a debug implementation with more control over the number and order of requests sent to a debugger, potentially allowing for coalescing of requests.
  • Asynchronous API's: provide explicitly asynchronous API's for interactions with debuggers that require communication with a remote process and allow for cancellation of requests made against a target.
  • Pluggable view update policies: allow debuggers to provide custom update/refresh policies views provided by the debug platform.
    • Update policies have been replaced with model proxies - a model proxy interfaces a debug model with the debug user interface, firing incremental deltas describing elements that have changed in a model
  • Flexible element hierarchy: support the presentation of different debug architectures in all views provided by the debug platform.
  • Table trees: allow table trees to be used in the standard debug views for more flexible/informative presentations.
  • Debug context management: support debugging without the Debug view open and allow for more than one debug session to be active at once, driving different sets of debug views. Global debug actions (such as step, resume, terminate, etc.), should act on the active debug context. Debug implementers may need control over view wiring (setting the input to debug views).
Simplify running and debugging - The current launching framework within Eclipse provides a flexible and powerful way to launch applications within and external to the Eclipse workbench. However, there are a number of usability issues with the current user interface and the launching task flow can be fairly complex. Potential areas of work and investigation include:
  • Context sensitive run/debug toolbar buttons: rather than forcing the user to choose the way to launch an application via cascade menus (as a Java Application, Java Applet, etc.), simply allow the user to press run or debug to launch the currently selected item with a single click, prompting the user for input only when necessary.
  • User preferences to filter type of launch configurations
  • ssociate launch configurations with files/projects
    • Support resource based filtering - filters configurations from closed and unavailable projects
    • Automatic deletion of configurations when a project is deleted (user configurable)
  • Allow configurations to be associated with resources and viewed/managed via a resource's properties.
  • Simplify the launch dialog: the perspective settings associated with launching should be an advanced option rather than the first thing a user sees when they open the launch dialog.

3.2 Current Development Effort - Milestone 6 (Friday, March 31th)

Flexible debug platform
  • Asynchronous capability adapters - provisional interfaces to allow asynchronous action enablement (terminate, step, etc.)
  • Support for columns in 'single model' debug views
Replace delegate actions - (extensions) in debug view (menu/toolbar) with single action objects
  • to address enablement issues, and improve performance (only one copy of each action)
Clean up API access warnings for clients subclassing public classes that subclass internal implementations

Address performance test failures

Bug fixing

3.2 Milestone 5 (Friday, February 17th)

Flexible debug platform
  • Support for SWT virtual tree in the asynchronous tree viewer
  • Incremental content retrieval
  • Support for table trees
  • Pluggable cell editors in asynchronous table viewer
  • Investigate multiple debug contexts, view sets, pin, etc.
  • Investigate pluggable drag and drop between all debug views
Launching enhancements
  • Add a toolbar to the launch dialog tree viewer - support new, copy, delete, and filters
  • Preferences for filter configurations from the UI in the launch dialog and launch history - closed projects, deleted projects, configuration types types, capabilities
Debug view management
  • Rework debug view management support (automatically display views associated with debug contexts)

3.2 Milestone 4 (Friday, December 16th)

Release new internal API's The new API's will be internal for 3.2 to allow time for review and use by community
  • Asynchronous viewer API - asynchronous structured viewers as API, including an abstract structured asynchronous viewer and a tree viewer
  • Flexible hierarchy API - asynchronous label and tree content adapters as API. Provide default implementation of adapters, registered for default debug model elements and allow clients to provide custom adapters to create custom content in all debug views
  • Pluggable model proxies - Allows debuggers to provide custom model proxies to control the update of elements in a debug viewer
  • Debug context API - Allows debuggers to drive debugging (source lookup, action enablement, etc.)
Launching enhancements
  • Investigate single click launching - goal is to replace the "Run/Debug As" cascade menus with single actions - "Run/Debug".
  • Add hyperlink from launch dialog to perspective preferences
  • Investigate ways for products to reduce the number of configuration types visible in the launch dialog
  • Provide API to associated a resource with a launch configuration (allows filtering configurations from closed projects)

3.2 Milestone 3 (Friday, November 4th)

Release new API's for review and feedback The new API's will not be committed until M4:
  • Asynchronous viewer API - Release asynchronous structured viewers as API, including an abstract structured asynchronous viewer and a tree viewer
  • Flexible hierarchy API - Release asynchronous label and tree content adapters as API. Provide default implementation of adapters, registered for default debug model elements, which allows clients to provide custom adapters to create custom content in all debug views
  • Pluggable update policy API - Allows debuggers to provide custom adapters to control the update & refresh of elements in a debug viewer
  • Debug context API - Allows debuggers to drive debugging (source lookup, action enablement, etc.)
Centralize launch perspective settings Investigate single click context sensitive launching
  • Goal is to replace the "Run/Debug As" cascade menus into single click actions - "Run/Debug".
Support for console content types to allow line trackers to be contributed based on content in a console

3.2 Milestone 2 (Friday, September 23rd)

Prototype asynchronous tree viewer
  • interfaces (adapters) used to retrieve content and labels for this view will be explicitly asynchronous to support latent content and provide context such that different content for the same element is possible in different views/contexts/settings
  • support duplicate elements
  • allow refresh calls to be made in a non-UI thread
Prototype flexible element hierarchy
  • the asynchronous tree will use adapters that support a flexible hierarchy as described here
Prototype pluggable update policies

Breakpoint import/export

Support to remove a single process console from the console view (in addition to remove all terminated)