Debug Tutorial Custom Integration

Preview:

DESCRIPTION

 

Citation preview

1Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Debug Platform: Custom Integration

Darin Wright, Curtis WindattIBM Rational Software

March 17th, 2008

2Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Tutorial Structure

This tutorial Builds on information from “The Basics” tutorial

Is arranged as a set of modules

Examples provided PDA modified to have no threads (since it’s single threaded)

MIDI player (demonstrates non-debug model objects in debug views)

Use the example source code for reference

:pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse org.eclipse.debug.examples.core org.eclipse.debug.examples.ui

3Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Modules – Custom Integration

1. Overview2. Custom Operations3. Custom Content

1. Contents & Labels

2. Columns

3. Viewer Input

4. Detail Panes & Value Editors

4. Custom Updating1. Model Proxy

2. Save/Restore

3. Source Lookup

4Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Module 1:

Custom Integration Overview

5Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Debug Platform 3.1 and Earlier

Common Debug Perspective, Views & Actions

Standard Debug Model Interfaces

Implementation of the Standard Model

Platform defined API

Model defined API

6Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

An Inflexible Platform

1. The standard debug model doesn’t represent all architectures Embedded hardware models are different – often there are multiple

processors in multi-core, possibly with DSP configurations

2. Standard debug views and actions place high demands on the underlying target and enforce a synchronous interaction View content and labels are retrieved synchronously in UI thread

7Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

A Flexible Platform

An arbitrary element hierarchy in all debug platform views Additionally, support model specified columns

A pluggable update mechanism for all views Models control what gets updated and when

Asynchronous interactions between UI and model Interactions do not block the UI thread and are cancelable

Allows implementations to coalesce requests

Flexible view wiring and retargettable actions For example, the input to the variables view may not be a frame

Pluggable source lookup The platform provides a source lookup framework, but you can override it

8Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Debug Platform @since 3.2

Common Debug Perspective, Views & Actions

Standard Debug Model Interfaces

Implementation of theStandard Model

Alternate DebugImplementation

Common Interaction Adapters: Content, Labels, Function

Standard Adapter Implementation Alternate Adapter Implementation

9Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Custom Model Integration

A debugger provides a layer of adapters to interact with the debug platform’s views and actions

Content and label providers for view content

Model proxy and deltas for view update

Command handlers for actions

Source display adapter The debug platform provides adapters for implementations of the

standard model Existing models continue to work; new models have a choice

Additionally the platform provides services for debug context management

Ways to access and provide the active debug context that drives a debug session

10Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Debug Platform 3.3 – Adapters Changed from 3.2

Common Debug Perspective, Views & Actions

Standard Debug Model Interfaces

Implementation of theStandard Model

Alternate DebugImplementation

** Common Interaction Adapters: Content, Labels, Function **

Standard Adapter Implementation ** Alternate Adapter Implementation **

11Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Changes in 3.2 -> 3.3

Some provisional APIs evolved to public IDebugContextService & support classes/interfaces

Leverage the JFace viewer framework JFace tree viewer with SWT.VIRTUAL flag, lazy tree content provider, etc.

Debug has less duplicated/custom viewer code

More (but not all) of the viewer framework lives in the right place

12Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Public and Provisional API in 3.4

Public API Debug Context Management

Debug Command Handlers

Source Display

Suspend Trigger

Provisional API Viewers

Content Labels Viewer State Viewer Input Service (new in 3.4)

Viewer framework is still provisional in 3.4 Would like to see a general asynchronous viewer framework plug-in evolve

that is not debug specific

13Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

The Eclipse Adapter Pattern

A hook provided by the Eclipse runtime allowing dynamic behavior extensions for objects

IAdaptable - the interface adaptable objects implement

IAdaptable a = [some adaptable object];

IFoo x = (IFoo)a.getAdapter(IFoo.class);

if (x != null)

[do IFoo things with x]

14Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Where do Adapters come from?

An object can implement IAdaptable directly, but in order to be extensible via platform extension points, objects must subclass PlatformObject

Adapters are created by adapter factories (IAdapterFactory)Object getAdapter(Object adaptable, Class adapterType)

Class[]getAdapterList()

You can contribute adapters in two ways: Use code to register an adapter factory for a class

Use the org.eclipse.core.runtime.adapters extension point to register an adapter factory for a class

15Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Adapter Factories: Best Practices

It’s best to use the extension point: Can extend behavior of classes defined in other plug-ins

Allows Eclipse to discover adapters even if plug-in is not loaded

<extension point="org.eclipse.core.runtime.adapters"> <factory class="org.eclipse.jdt.debug.ui.actions.RetargettableActionAdapterFactory" adaptableType="org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor"> <adapter type="org.eclipse.debug.ui.actions.IRunToLineTarget"/> <adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>

You can use code, but I don’t have a good argument for it: Adapters will only be available if plug-in is loaded

IAdapterManager manager = Platform.getAdapterManager();

manager.registerAdapters(IAdapterFactory, Class)

16Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Summary

The platform provides a layer of pluggable adapters to support non-standard models

Implementation of adapters for standard models

flexibility and extensibility for non-standard models

17Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Module 2:

Custom Operations (Capabilities)

18Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Debug Operation Players

1. Active Debug Context (model) The thing being debugged

Provided by the context service

2. Actions (UI) Step over, into, return, suspend, resume, terminate, etc.

Provided by the platform – buttons, menus, hot keys

3. Command Handlers (behavior proxy) Pluggable implementations of standard actions

Platform provides implementation for standard models

19Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

(1) Debug Context Service & (2) Actions

Debug

View

Selection

Actions

(getAdapter IStep, etc)

Source Lookup

(getAdapter ISourceDisplay)

IDebugContextService

Context activated

Context activated

Provides context

(context serviceper window)

20Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

(3) Debug Command Handlers

All handlers are subtypes of IDebugCommandHandler with common methods:

canExecute(IEnabledStateRequest request)

execute(IDebugCommandRequest request)

Interfaces defined in org.eclipse.debug.core.commands Standard models can override the platform’s implementation Custom models must provide an implementation Mechanisms:

Provide handlers as adapters (IAdaptable)

Implement handler interfaces directly

21Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Common Handlers

The set of handlers understood/defined by the platform is static: IDisconnectHandler

IDropToFrameHandler

IResumeHandler

IStepFiltersHandler

IStepIntoHandler

IStepOverHandler

IStepReturnHandler

ISuspendHandler

ITerminateHandler

The platform provides standard implementations for these handlers Executes the capabilities (IStep, ITerminate, etc) implemented by the debug model

Clients can provide their own implementation for any handler they wish to customize

22Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Using Standard Handlers Implement standard model interface and use platform handlers Customize capabilities in the model (IStep, ITerminate, etc)

ActiveContext

Step OverHandler

TerminateHandler

ResumeHandler

SuspendHandler

Step OverAction

SuspendAction

ResumeAction

TerminateAction

implements IStep, ISuspendResume, ITerminate…

23Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Using Custom Handlers

Provide custom handlers as adapters

ActiveContext

Step OverHandler

TerminateHandler

ResumeHandler

SuspendHandler

Step OverAction

SuspendAction

ResumeAction

TerminateAction

24Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Asynchronous Interaction

Interactions with a command handler are asynchronousUpdating enabled state

Execution

An IRequest object is passed to the handlerSimilar to a result collector

Also accepts a status

Allows for cancellation

Must be notified when request is complete

Specialized requests are used

25Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Update Enabled State

Debug

View

Selection

(fire)CONTEXT

ACTIVATED

ContextService

Step OverAction

(notify)CONTEXT

ACTIVATED

Step OverHandler

Request

canExecute(…)

setEnabled(…)done()

Updateenablement

26Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Execute Command

Step OverAction

Step OverHandler

Request

execute(…)

setStatus(…)done()

Notify errors in dialog

click | key press

remain enabled?

27Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Standard Implementation

The handlers provided by the platform uses jobs to implement asynchronous interactions with the standard synchronous APIs

The handler schedules a job for each request and returns

The job runs asynchronously

When the job is complete, the request is updated with the status, result and done() is called on the request

Enabled state jobs are scheduled serially on the debug context

Execution jobs do not have scheduling rules Allows enabled state to be updated while executing a request

28Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Summary

1. Operations (step, suspend, etc.) are handled by debug command handlers Platform has a static list of handler types: IDisconnectHandler,

IResumeHandler, etc.

2. The platform provides default handlers Only available to the standard debug model

Asynchronously calls capabilities on the selected debug element

Implement capabilities (IStep, ISuspendResume, etc.) on debug model elements to determine behaviour.

3. The platform handlers can be replaced with your own Added as adapters on the debug model elements

29Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Module 3:

Custom Content

30Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Overview

3.1 Contents & Labels

3.2 Columns

3.3 Viewer Input

3.4 Detail Panes & Value Editors

31Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.1 Content & Label Players

1. Viewer Displays elements from a model

2. Presentation Context Identifies the view or context in which elements are being displayed

3. Model Underlying debugger implementation (or any model)

4. Element Content Provider Identifies which elements have children in a given context, how many

children, and provides children in sub ranges

5. Element Label Provider Provides text and images for model elements in a given context

6. Request Collects results of each request asynchronously

32Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Goal

Client must have complete control over the implementation of content retrieval – i.e. whether requests are processed in parallel vs. sequential, which thread, whether requests are coalesced, etc.

33Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Content & Labels

JFaceTree Viewer

DebugModel

Element

Element

ContentProvider

LabelProvider

update(…)

updateHasChildren(…)

updateChildCount(…)updateElement(…)

ElementContentProvider

update(…)

Request

done()

replace(…), setChildCount(…)setHasChildren(…)

ElementLabel

Provider

update(…)

Request

done()

setText(…), setImage(…), …

34Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Properties of the Interaction

The interaction is extensible Extensibility provided by adapters, allows for arbitrary model API

The interaction is context sensitive The presentation context identifies the part requesting content, allowing for

different content in different views

The interaction is asynchronous The content and label providers retrieve information in a non-blocking

fashion, reporting results to a request and notifying it when done

The interaction is cancelable The request can be canceled by the platform or model

The interaction reports errors The request carries a status to inform the user of failures that arise

35Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

The Viewer

The debug platform provides an implementation of a tree viewer with a special content provider to support custom asynchronous content

Based on JFace tree viewer with an ILazyTreePathContentProvider

The viewer is currently provisional API

The viewer is not intended to be subclassed, but can be instantiated

The viewer comes with a content provider that must be used (this is the guts of the asynchronous content mechanism)

See TreeModelViewer for more information

36Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Filtering

JFace does not support filtering in virtual tree viewers Since all elements are not retrieved at once

For backwards compatibility, debug has added support for filters The filters work incrementally – as elements are added to the viewer, filters

are applied

Side effect – scrollbars can grow shrink if many elements are filtered

For a more stable UI, models/content providers can perform filtering

In 3.4, the Java debugger content adapters filter variables Note: Requires all content to be retrieved in order to know what was filtered and

what the filtered child count will be

Sorting is not supported Models/content providers must perform sorting if desired

37Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Presentation Context

Describes the context in which a request has been made:

IPresentationContextpublic String getId();public String[] getColumns();

Allows adapters to provide different content in different contexts The “id” roughly corresponds to view identifiers (but is no longer

tied to a workbench part, to support viewers that are not in parts) A viewer is created with a specific context Clients may specialize a presentation context to provide more

information (subclass base PresentationContext class)

38Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

The Model

Any hierarchical model, for example Implementation of standard debug model

Implementation of a non-standard debug model

A file system…

Anything

39Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Element Content Provider

Provides context sensitive content for an element Implement directly, or provided as an adapter

Each update request is a specialized viewer update (which is a specialized IRequest), identifying context and element for the request:

40Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Content Requests

41Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Implementing a Content Provider

Content provider must process requests asynchronously (i.e. non-blocking)

The platform uses jobs to implement asynchronous interactions with the standard synchronous APIs

Schedules a job for each request and returns

The job runs asynchronously and fills in information on request

When the job is complete, the request is updated with any status, and done() is called on the request

@see ElementContentProvider – a base class that uses jobs to generate content from synchronous model APIs

42Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Label Provider

Provides context sensitive labels for elements Implemented directly or provided as an adapter

Provides text, font, image, foreground and background colors

Must be non-blocking, platform uses jobs…

43Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Compatibility with IDebugModelPresentation

The debug platform registers label providers for all standard debug model elements

Delegates to the appropriate model presentation for each object to compute labels for backwards compatibility

Clients may continue using IDebugModelPresentations May choose to separate model presentation into new label providers

Model presentations tend to be large and non-OO in structure, so there may be a benefit in migrating to label providers in terms of code structure

The Java debugger uses a mix Original model presentation for its standard elements Label providers for locks, monitors, thread groups, references

44Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Which thread are labels computed in?

If you provide your own label adapters, the choice is up to you. By default, the platform uses a non-UI thread to compute labels

This sometimes causes problems when populating image registries (which requires the UI thread)

In 3.4, IDebugModelPresentationExtension has been added

Allows models to dynamically control if the UI thread should be used:

public boolean requiresUIThread(Object element);

45Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Same Old Problem

There can only be one adapter (type) per object (type) 3rd parties can’t

Extend adapters for new views Modify or extend content in existing views

Assumption we’ve be going on The debug model implementation provides all adapters (or re-uses the

platform adapters)

Debuggers are not extended in downstream plug-ins

Would require use of an extension point to contribute content and label providers

46Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Customizing Launch Content

The input to the Debug view is the ILaunchManager, which displays all registered launches as root elements

To customize content for a launch object, you must provide your own implementation of an ILaunch and a content adapter for it

The platform registers content/label providers for ILaunch, so you register adapters for your implementation class

Customizing content for elements within a launch is simpler, as you only need to register custom adapters for your objects

MIDI example provides a custom launch implementation

47Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.1 Summary: Content & Labels

1. Implement content providers For each model element implement an IElementContentProvider

2. Implement label providers For each model element implement an IElementLabelProvider

3. Implement adapter factory Implement an IAdapterFactory to instantiate content and label providers

for the model elements

4. Register adapters and adapter factory with the adapter manager Register in code at plug-in startup, or use extension point

48Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.2 Columns

Some debug views are capable of displaying arbitrary columns Columns are only supported in homogeneous views (i.e. views that display

elements from one model at a time) Variables view, Registers view

Clients can customize: Columns to display

Cell editors

Labels for each column

49Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.2 The Column Players

1. Viewer, Model, & Presentation Context (Same as before) Viewer displays elements from a model in a specific

context (view)

2. Column Presentation Defines columns, headers and images for a context and viewer input

3. Column Presentation Factory Creates columns presentations for specific contexts and elements

4. Element Editor Creates cell editors and cell modifiers

5. Element Label Provider (Same as before) Provides column specific labels for an element

50Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Columns

Viewer ModelPresentation

Context

ColumnPresentation

Factory

ElementEditor

Input Element

Element

ColumnPresentation

CellEditor

CellModifier

51Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Column Presentation

A column presentation defines the columns to be displayed Column headers and images

Column identifiers – each column is assigned a unique id (String)

All available columns and initially visible columns Allows many columns to be provided and a default set of columns that should be

displayed The user can select which columns to be displayed in the viewer

Each column presentation also has a unique id (String) to represent its type/kind

The column presentation in a viewer is updated when the viewer input changes The column presentation is only changed when the type of columns presentation

changes

Whether columns are optional – allows users to toggle columns on/off

52Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Column Presentation Factory

A column presentation factory creates column presentations for specific views and elements

For example, the platform provides a factory to create a column presentation for IStackFrame’s in the Variables view with columns for variable name, declared type, value, and actual type

Implement IColumnPresentationFactory Register the factory with an adapter factory for your debug element

public IColumnPresentation createColumnPresentation(IPresentationContext, Object);

public String getColumnPresentationId(IPresentationContext, Object);

53Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Element Editor

A element editor allows users to edit cell values in-line Provides custom cell editors for each element and column

The widgetry to modify a value Uses JFace CellEditor, which provides standard editors for text, check

boxes, combo boxes, etc.

Provides a cell modifier for each element Determines which columns can be modified, and updates the underlying model

after a cell has been edited Uses JFace ICellModifier

54Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Enhance Label Provider

The label provider generates labels for each column The displayed columns are provided by the label update request:

Columns are represented by their identifiers

public String[] getColumnIds();

Labels must be set in the same order as the label request specifies

public void setLabel(String text, int columnIndex);

Each column also supports foreground/background colors font image

55Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.2 Summary: Displaying and Editing Columns

1. Implement column presentation Implement IColumnPresentation for each context that you want columns

displayed in

2. Register column presentation factory Implement and register IColumnPresentationFactory to create column

presentations on your debug elements

3. Implement element editor Implement IElementEditor for each element that you want to be able to

edit, and register as adapter on your element

4. Update element label provider to consider columns Update your label provider to specify labels for each column being

displayed in a label request

56Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Java Debugger Columns

The debug platform provides standard columns for the Variables view

The Java debugger specializes the support to only allow primitive and string values to be edited

in-line

provides a drop down editor for boolean values using the ComboBoxCellEditor provided by JFace

provides an additional ‘Instance ID’ column

57Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.3 Viewer Inputs

By default the active debug context is the input for Variables and Registers

the expression manager is the input for Expressions

However, these views support alternate inputs.

58Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.3 Viewer Input Players

1. Presentation Context (same as before) defines the context where an input is needed

2. Active Debug Context (same as before) defines the active/selected execution context

3. Viewer Input Provider Provides an alternate viewer input given a presentation context and active

debug context

59Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Input + Context (View) = Alternate Input

Viewer InputProvider

Active Context(Default Input)

PresentationContext

ActualViewer Input

60Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Applications

In 3.4, the Registers view uses this support for standard models to avoid collapsing the all register groups when a new frame is selected.

Provides a proxy as a viewer input representing a set of register groups

The proxy maintains equality if all of its register groups are equal

The viewer remains stable (input does not effectively change as each frame is selected)

Can be used to customize content in the Expression view For example, only display expressions relevant to a specific target rather

than displaying all expressions in the workspace

61Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.3 Viewer Input Summary

1. Implement and register an IViewerInputProvider adapter for objects that you want to translate viewer inputs for (i.e. active debug context) The viewer input provider computes alternate viewer input asynchronously

given an IViewerInputUpdateRequest.

62Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.4 Detail Panes & Value Editors

Custom detail panes Default pane is a source viewer

Instead use any SWT Control

User can choose between multiple panes

Value editors Default editing dialog just takes a string

Pressing Ctrl-S in the detail pane calls setValue(String expression) on the variable by default.

Instead provide a custom dialog, custom save handling

63Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.4 Detail Pane Players

1. Detail Pane Manager Manages contributed panes, determines which pane to display for selection

2. Detail Pane Factories Provides possible detail panes for selection, instantiates detail panes

3. Detail Panes Create an SWT control, displays current selection

64Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Detail Pane Manager

Manages all contributed detail panes By default, only one detail pane available: Source Viewer

When selection changes Queries detail pane factories for possible panes to display

Selects which detail pane to use

If pane has changed, instantiate pane and control

Pass selection to the pane

How to choose between panes? Factories can select a pane as the default for a selection

Manager remembers if a user selects a different pane

Otherwise use the default source viewer

65Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Detail Pane Factories

Contribute a factory implementing IDetailPaneFactory At <detailPaneFactories> extension point

Factory provides possible panes for a selection Manager determines which pane to display

Factory is responsible for instantiating the chosen pane

Use enablement expressions on extension Checks if factory should be enabled without instantiating the factory class

<enablement> <with variable="selection"> <count value="1“/> <iterate><or> <instanceof value="org.eclipse…launcher.TempoControl“/> <instanceof value="org.eclipse…launcher.ClockControl“/> </or></iterate> </with></enablement>

66Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Detail Panes

Must implement IDetailPaneReturned by the detail pane factories for a given selection

A detail pane can provide any SWT control as its displayGiven an IWorkbenchPartSite and Composite

Panes must implement dispose method to clean up when pane is switched

67Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.4 Value Editor Players

1. Variable Value Editors Responsible for editing and saving values

68Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Variable Value Editors

Contributed to the <variableValueEditor> extension point Implement IVariableValueEditor

Only one editor can be contributed per debug model id

Can provide specialized dialogs for variable editing Given the variable and a shell for creating dialogs with

Java debugger provides specialized dialogs for primitives, Strings and Objects

Can provide custom save handling Given the variable, text from the detail pane and a shell

Java debugger handles the save operation by performing an evaluation on the selected text to compute a new value for the selected variable

Use the shell to open error dialogs

69Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

3.4 Detail Panes & Value Editors Summary

1. Implement IDetailPane for each custom detail pane Clean up UI elements in the dispose method

2. Contribute an IDetailPaneFactory to <detailPaneFactories> Return a default pane to override the default text viewer

Use enablement expressions to reducing loading

3. Contribute an IVariableValueEditor to <variableValueEditors> Only one value editor per debug model id, so it must handle all custom dialogs and save

handling for the model.

70Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Module 4:

Custom Updating

71Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Introduction: Viewer Updates

The debug views can display any content Most debug models are dynamic in nature

A model changes state often without user interaction

Examples: thread creation, suspension and termination

Debug views needs to show an accurate representation of the model as it changes state

The model needs a way to inform its view when and how things have changed

72Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

4.1 Update Players

1. Viewer, Model, & Presentation Context (same as before) Displays elements from a model

2. Model proxy Describes a model for a specific view as it changes

3. Model deltas Description of how a model has changed

4. Model proxy factory Creates a model proxies for specific views

5. Model selection policy Resolves selection conflicts within a model

6. Model selection policy factory Creates selection policies for specific views

73Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Viewer Updates

Viewer Model

PresentationContext

ModelProxy

Element

fires deltas

add, removerefresh, select

expand

Model ProxyFactory

create

modelspecific

interaction

ContentProvider

74Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Model Proxy

A model proxy interfaces a debugger (underlying model) with a specific view: IModelProxy

Fires deltas as the model changes, specific to a view

A model proxy is tied to a presentation context, representing the content your model has provided via its content adapters

A model proxy usually represents all elements for a single instance of a model (for example, it represents a single Java debug session and fires deltas for all elements within that model – threads, frames, etc.)

You could choose to implement model proxies for each element in a model

75Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Tip: Subclass AbstractModelProxy

The debug platform provides an abstract implementation of IModelProxy that should be sub-classed: AbstractModelProxy. It provides support for:

Adding and removing model delta listeners

Firing deltas to all registered listeners

Access to the context and viewer in which it has been installed

The debug platform provides implementations of model proxies for the standard debug model and standard views

For example, a model proxy is provided for IDebugTarget’s in the debug view. The proxy listens to debug events from a specific debug session and fires corresponding deltas.

76Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Model Delta

An IModelDelta describes an incremental change in a model Similar to a resource delta (IResourceDelta)

Hierarchical description of changes – a tree of nodes rooted at the viewer input element

Each node references a model element and describes how the element changed (if at all), and what action (if any) to perform on the element

Changes and actions are described by flags in each delta node Change flags: ADDED, REMOVED, REPLACED, INSERTED, CONTENT,

STATE, NO_CHANGE

Action flags: SELECT, EXPAND, COLLAPSE, INSTALL, UNINSTALL

Platform provides an implementation of model deltas to be instantiated by model proxy implementations: ModelDelta

77Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Model Delta

Model deltas are similar to resource deltas Describe incremental changes in a hierarchical model

Model deltas describe what changed, how it changed, and what action to perform on an element

Debug Target: NO_CHANGE

Thread: CONTENT | STATE | EXPAND

Stack Frame: STATE | SELECT

78Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Delta Details

The model controls proxy installation and disposal A model proxy is installed for the viewer’s root/input element by the viewer

implementation

After that, a model controls what and when model proxies are installed and uninstalled by firing deltas (in 3.2, a proxy was installed automatically when an element was added to a viewer)

New flags exist: INSTALL and UNINSTALL

Deltas must include indexes and child counts to support expand and select

Supports virtual content retrieval (only retrieve visible children)

Allows expand/select to happen in one pass (vs. iterative)

79Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Model Proxy Factory

The IModelProxyFactory instantiates model proxies for elements in specific contexts

(Note: the model proxy itself could not be an adapter because we need to create context specific proxies, and the getAdapter() infrastructure does not allow for creating different adapters based on context)

public interface IModelProxyFactory {public IModelProxy createModelProxy( Object element, IPresentationContext context);

}

80Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Model Selection Policy

An IModelSelectionPolicy resolves selection conflicts for a model

When a model delta instructs a viewer SELECT, and there is an existing selection, the viewer consults the selection policy of the existing selection

The new selection is set only if: The new selection is contained in the same model as the existing selection and

the new selection should override the existing selection Or the new selection is in a different model and the existing selection is not

“sticky”

Also allowed to set a new selection when an existing selection becomes invalid

If a refresh causes an existing selection to be removed, the model selection policy is given a chance to set a new selection

81Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Default Selection Policy

The debug platform provides a default selection policy for debug elements in the debug view

The policy ensures that when a thread suspends, the newly suspended thread is only selected if there is not a currently suspended stack frame selected

The user’s focus on a suspended context is not changed as other contexts suspend

82Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Selection Policy Factory

A selection policy is created from a selection policy factory: IModelSelectionPolicyFactory

Allows context specific selection policies to be created (i.e. for each view and model)

public IModelSelectionPolicy createModelSelectionPolicy(Object element,IPresentationContext context);

83Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

4.1 Summary: Custom Viewer Updates

1. Implement model proxy Implement an IModelProxy for your debugger in each context that it will be

displayed

2. Implement model proxy factory Implement IModelProxyFactory to instantiate your model proxies for each

presentation context it supports

3. Implement model selection policy Implement IModelSelectionPolicy to resolve selection conflicts for your model

4. Implement model selection policy factory Implement IModelSelectionPolicyFactory to instantiate your selection policies

5. Register factories Implement an IAdapterFactory to instantiate your model proxy factory and model

selection policy factory

84Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

4.2 Save & Restore of Viewer State

The framework supports expansion, selection and scroll position (top visible element) state saving

Models provide element mementos via IElementMementoProvider

Register adapter with viewer input element Can register adapters with each model element, or use root memento provider

for all elements in a viewer

Viewer has LRU cache of 20 states Currently, cache is not persisted – only present for viewer lifecycle

Used by Variables, Registers, and Expressions views Whenever the viewer input changes, state is saved for the previous input if

the previous input has an IElementMementoProvider

85Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Element Memento Provider

Creates mementos for elements Asynchronously builds a memento for an element

A memento request provides an IMemento to store information in

Compares elements to previously created mementos When a viewer attempts to restore state, the memento provider is consulted

to determine if a given element corresponds to a memento previously created by the provider

86Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Default Memento Providers

The debug platform includes memento providers for the Variables, Registers, and Expressions views

Default mementos are name based

87Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

4.3 Source Display Players

1. Suspend Trigger Notifies when an execution context has suspended

2. Source Display Adapter Displays source for an execution context in a workbench page

3. Suspend Trigger Listener Listens for suspends, switches perspectives

88Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Perspective Switching

Launch

SourceLookupService

When a launch is registered the source lookup service asks for its suspend trigger adapter and starts listening to it Triggers perspective switch (if any) on each suspend

89Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Source Lookup

Whenever a debug context is activated, the source lookup service displays source using the context’s source display adapter

The platform provides a source display adapter for stack frames

ActiveContext

SourceLookupService

90Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.Debug Platform: Custom Integration | March 17th, 2008

Legal Notices

Copyright © IBM Corp., 2007-2008. All rights reserved. Source code in this presentation is made available under the EPL, v1.0, remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license.

IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation, in the United States, other countries or both.

Rational and the Rational logo are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries or both.

Java and all Java-based marks, among others, are trademarks or registered trademarks of Sun Microsystems in the United States, other countries or both.

Eclipse and the Eclipse logo are trademarks of Eclipse Foundation, Inc.

Other company, product and service names may be trademarks or service marks of others.

THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH INFORMATION. ANY INFORMATION CONCERNING IBM'S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE.

Recommended