Skip to content

[Dexter] Add DAP support for Dexter, including lldb-dap #149394

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 29, 2025

Conversation

SLTozer
Copy link
Contributor

@SLTozer SLTozer commented Jul 17, 2025

This patch adds a new variety of driver to Dexter, allowing it to work with DAP-based interfaces for debuggers. The first concrete instance of this is implemented in this patch, adding support for an lldb-dap debugger. This is functionally very similar to the existing LLDB debugger support*, but uses lldb-dap as its executable instead of lldb.

This has been tested successfully against the existing feature_test suite, and manually tested against some other inputs; support is essentially complete, although any further DAP-based debuggers may require additional hooks inserted into the base class to deal with any idiosyncrasies they exhibit (as with the several that have been inserted for lldb-dap).

NB: There are some small differences resulting from differences between lldb-dap's use of the lldb API and Dexter's use in its lldb driver; one small example of this is when evaluating variables, lldb-dap will try to first use GetValueForVariablePath and fallback to EvaluateExpression if necessary, while Dexter will always use EvaluateExpression; these can give slightly different results, resulting in different output from Dexter for the same input.

This patch adds a new variety of driver to Dexter, allowing it to work with
DAP-based interfaces for debuggers. The first concrete instance of this is
implemented in this patch, adding support for an `lldb-dap` debugger. This
is functionally very similar to the existing LLDB debugger support*, but
uses lldb-dap as its executable instead of lldb.

This has been tested successfully against the existing feature_test suite,
and manually tested against some other inputs; support is essentially
complete, although any further DAP-based debuggers may require additional
hooks inserted into the base class to deal with any idiosyncrasies they
exhibit (as with the several that have been inserted for lldb-dap).

NB: There are some small differences resulting from differences between
lldb-dap's use of the lldb API and Dexter's use in its lldb driver; one
small example of this is when evaluating variables, lldb-dap will try to
first use `GetValueForVariablePath` and fallback to `EvaluateExpression` if
necessary, while Dexter will always use `EvaluateExpression`; these can give
slightly different results, resulting in different output from Dexter for
the same input.
@SLTozer SLTozer self-assigned this Jul 17, 2025
@SLTozer SLTozer marked this pull request as ready for review July 23, 2025 10:13
Copy link
Member

@walter-erquinigo walter-erquinigo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great!
I'm approving it because it's been out for a few weeks. Feel free to ping others if you want reviews on the Dexter-specific bits.

@SLTozer SLTozer merged commit 83dfdd8 into llvm:main Jul 29, 2025
11 checks passed
SLTozer added a commit that referenced this pull request Jul 29, 2025
SLTozer added a commit that referenced this pull request Jul 29, 2025
)"

This reverts commit 83dfdd8.

Temporary revert, as the above patch contains some python code requiring at
least version 3.10, when the minimum required by LLVM is 3.8.
kraj pushed a commit to kraj/llvm-project that referenced this pull request Aug 8, 2025
This patch adds a new variety of driver to Dexter, allowing it to work
with DAP-based interfaces for debuggers. The first concrete instance of
this is implemented in this patch, adding support for an `lldb-dap`
debugger. This is functionally very similar to the existing LLDB
debugger support*, but uses lldb-dap as its executable instead of lldb.

This has been tested successfully against the existing feature_test
suite, and manually tested against some other inputs; support is
essentially complete, although any further DAP-based debuggers may
require additional hooks inserted into the base class to deal with any
idiosyncrasies they exhibit (as with the several that have been inserted
for lldb-dap).

NB: There are some small differences resulting from differences between
lldb-dap's use of the lldb API and Dexter's use in its lldb driver; one
small example of this is when evaluating variables, lldb-dap will try to
first use `GetValueForVariablePath` and fallback to `EvaluateExpression`
if necessary, while Dexter will always use `EvaluateExpression`; these
can give slightly different results, resulting in different output from
Dexter for the same input.
SLTozer added a commit that referenced this pull request Aug 11, 2025
…9394)"

This reverts commit e1e312e.

The original patch had some python3.10 syntax, which was incompatible with
the python3.8 minimum version in LLVM currently; this reapply brings
everything down to 3.8 compatibility. Separately, some incorrect arguments
were passed in LLDBDAP._get_launch_params, which have been removed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants