### Debug model presentation

Since there is a generic, uniform model for debug elements in the platform, it's possible to provide a starting point for implementing debugger UI classes. The heart of the debugger UI support is the debug model presentation (IDebugModelPresentation). The debug model presentation is responsible for providing labels, images, and editors associated with specific debug elements.

Plug-ins that define their own debug model typically provide a debug model presentation for displaying debug elements in the model. This is done using the org.eclipse.debug.ui.debugModelPresentations extension point. This extension point allows an implementation of IDebugModelPresentation to be associated with the identifier of a particular debug model.

Recall that debug model elements know the id of their originating debug model. This means that given any debug element, the debug platform can obtain the id of the debug model and then query the plug-in registry for any corresponding debug model presentations.

The markup for adding a debug model presentation looks like this:

    <extension point = "org.eclipse.debug.ui.debugModelPresentations">
             <debugModelPresentation
                 class = "org.eclipse.jdt.internal.debug.ui.JDIModelPresentation"
                 id = "org.eclipse.jdt.debug"
                 detailsViewerConfiguration = "org.eclipse.jdt.internal.debug.ui.display.DetailsViewerConfiguration">
              </debugModelPresentation>
    </extension>

An optional detailsViewerConfiguration can be specified in addition to the debug model presentation. The details viewer must extend the JFace SourceViewerConfiguration class. The meaning of "details" is interpreted by the debug model. The details are computed by the debug model presentation and passed to the details viewer. For example, the Java debugger uses the details viewer to show code assist in the variables view when expressions are evaluated.