-
Notifications
You must be signed in to change notification settings - Fork 153
Description
The Debug Adapter Protocol (DAP) defines a rigid payload schema for breakpoints, without offering a standardized mechanism for transferring custom breakpoint data. This hampers implementing important features, such as breakpoint types (e.g., hardware/software breakpoints), multicore and multi thread features. Previously, more narrow-focused proposals didn't gain enough traction, so a general approach to custom breakpoint data could serve everyone better.
microsoft/vscode#152428
microsoft/vscode#181794
microsoft/vscode#187854
Proposal
We propose to add a new property named customData into the payload of the set breakpoint request and response (SourceBreakpoint type and Breakpoint type). The customData property should be of type any to support transferring arbitrary information.
To enable a generic editing UI in the development tool, we propose to add a supportedBreakpointData capability flag in the initialize request (client to adapter). In the Capabilities type, the adapter can then define in its response the supported custom breakpoint data properties using a format similar to the configuration property schema in VS Code. Based on this schema, the development tool can show a configuration widget on the breakpoint that allows the user to specify the supported breakpoint settings.
Additionally, we propose to introduce an explicit breakpointType property on SourceBreakpoint type and Breakpoint type and let the debug adapter specify which types it supports in the Capabilities response. The property schema for breakpoint data mentioned above could then be grouped by breakpoint type, so the development tool could offer a UI for the user to switch between supported breakpoint types and show the correct configuration widget depending on the selected breakpoint type. This could further be harmonized with the UI for switching between, e.g. conditional breakpoints and source breakpoints.
Context
This proposal originated from an ongoing initiative to improve embedded development in modern IDEs, such as VS Code and Eclipse Theia, in the CDT Cloud community, in particular
- Mark Goodchild (Renesas)
- Jonah Graham (@jonahgraham, Kichwa Coders)
- Asim Gunes (@asimgunes, on behalf of Renesas)
- Kostiantyn Kirenko (@kkistm, STMicroelectronics)
- Philip Langer (@planger, EclipseSource)
- Rob Moran (@thegecko, Arm)
- Jens Reinecke (@jreineckearm, Arm)
- William Riley (@Kummallinen, Renesas)
- Florent Vion (STMicroelectronics)
We are looking forward to your feedback and would happily support the implementation of this proposal.