Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "CDT/Archive/Debug/Catchpoints support"
(→Implementation) |
(→Workflow & UI) |
||
Line 11: | Line 11: | ||
** Select catchpoint in breakpoints view, right click -> Show breakpoint properties | ** Select catchpoint in breakpoints view, right click -> Show breakpoint properties | ||
** Catchpoint properties contain common page, conditions and triggered actions. | ** Catchpoint properties contain common page, conditions and triggered actions. | ||
+ | ** Common has all that regular breakpoints have except file/line stuff, and in addition it has event type and extra control for event argument (viewing or editing). | ||
== Catchpoint contributions == | == Catchpoint contributions == |
Revision as of 14:46, 9 April 2008
This document describe design ideas of adding catchpoints support to CDT
Contents
Workflow & UI
- Adding catchpoint
- From breakpoints view, right click Add catchpoint... Dialog opens. Dialog contains type of event to catch and maybe additional argument field.
- From console, triggers adding breakpoints by backend
- Removing catchpoint
- Removing catchpoint from breakpoints view, select breakpoint, right click -> Delete
- From console, triggers deleting breakpoint by backend
- Viewing/Editing
- Select catchpoint in breakpoints view, right click -> Show breakpoint properties
- Catchpoint properties contain common page, conditions and triggered actions.
- Common has all that regular breakpoints have except file/line stuff, and in addition it has event type and extra control for event argument (viewing or editing).
Catchpoint contributions
- Main Catchpoints attributes would consist of Catchpoint type (event type - String) and Extra argument (Object)
- Plugin can contribute via extension points of programmatically:
- new catchpoint type, and whether it will use extra argument or not. Label for this catchpoint type and Label for the argument.
- for advanced editing of argument(s) plugin can contribute class that implements Control (To view/edit extra argument) and implement some interface to get/set extra argument
Implementation
- CBreakpoint already provides extensibility mechanism that can be used for catchpoint contributions (BreakpointExtention)?
- To represent event type there is two options: use marker type or use marker attribute. I will go with attribute for now.
UI
- Add extension point that allow to contribute event type and its editors, example
<extension point="org.eclipse.cdt.debug.ui.catchpoints"> <catchpointPresentation eventTypeId="org.eclipse.cdt.debug.gdb.catch" eventTypeLabel="Exception Caught" hasArgument="true" argumentLabel="Exception Name" controlClass="org.eclipse.cdt.debug.ui.utils.CTypeAssistLookup" /> </extension>
Public API
- Add interface org.eclipse.cdt.debug.core.model.ICCatchpoint extends ICBreakpoint
- In there define strings for 2 addition marker attributes: event type id and event argument
- Define 2 getter methods for these attribute
- Add interface org.eclipse.cdt.debug.core.cdi.model.ICDICatchpoint extends ICDIBreakpoint
Other changes
- Add class org.eclipse.cdt.debug.internal.core.breakpoints.CCatchpoint extends CBreakpoint implements ICCatchpoint
- Add org.eclipse.debug.core.breakpoints extension for breakpoint markers
- Add createCatchpoint method in CDTDebugModel
- Support in CBreakpointManager handleBreakpontCreatedEvent
...