[Lldb-commits] [lldb] [lldb] [vscode-lldb] Add VS Code commands for high level debug workflow (PR #151827)
via lldb-commits
lldb-commits at lists.llvm.org
Sat Aug 2 09:18:45 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: None (royitaqi)
<details>
<summary>Changes</summary>
This allows other debugger extensions to leverage the `lldb-dap` extension's settings and logic (e.g. "Server Mode").
Other debugger extensions can invoke these commands to resolve configuration, create adapter descriptor, and get the `lldb-dap` process for state tracking, additional interaction, and telemetry.
---
Full diff: https://github.com/llvm/llvm-project/pull/151827.diff
3 Files Affected:
- (modified) lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts (+10)
- (modified) lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts (+23-1)
- (modified) lldb/tools/lldb-dap/src-ts/lldb-dap-server.ts (+7)
``````````diff
diff --git a/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts b/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts
index b5db45b56d6a6..fb1c928ede5fd 100644
--- a/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts
+++ b/lldb/tools/lldb-dap/src-ts/debug-adapter-factory.ts
@@ -198,6 +198,16 @@ export async function createDebugAdapterExecutable(
export class LLDBDapDescriptorFactory
implements vscode.DebugAdapterDescriptorFactory
{
+ constructor() {
+ vscode.commands.registerCommand(
+ "lldb-dap.createDebugAdapterDescriptor",
+ (
+ session: vscode.DebugSession,
+ executable: vscode.DebugAdapterExecutable | undefined,
+ ) => this.createDebugAdapterDescriptor(session, executable),
+ );
+ }
+
async createDebugAdapterDescriptor(
session: vscode.DebugSession,
executable: vscode.DebugAdapterExecutable | undefined,
diff --git a/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts b/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts
index 316ffaf47c3d2..59d3d3c99e42d 100644
--- a/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts
+++ b/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts
@@ -71,7 +71,29 @@ const configurations: Record<string, DefaultConfig> = {
export class LLDBDapConfigurationProvider
implements vscode.DebugConfigurationProvider
{
- constructor(private readonly server: LLDBDapServer) {}
+ constructor(private readonly server: LLDBDapServer) {
+ vscode.commands.registerCommand(
+ "lldb-dap.resolveDebugConfiguration",
+ (
+ folder: vscode.WorkspaceFolder | undefined,
+ debugConfiguration: vscode.DebugConfiguration,
+ token?: vscode.CancellationToken,
+ ) => this.resolveDebugConfiguration(folder, debugConfiguration, token),
+ );
+ vscode.commands.registerCommand(
+ "lldb-dap.resolveDebugConfigurationWithSubstitutedVariables",
+ (
+ folder: vscode.WorkspaceFolder | undefined,
+ debugConfiguration: vscode.DebugConfiguration,
+ token?: vscode.CancellationToken,
+ ) =>
+ this.resolveDebugConfigurationWithSubstitutedVariables(
+ folder,
+ debugConfiguration,
+ token,
+ ),
+ );
+ }
async resolveDebugConfiguration(
folder: vscode.WorkspaceFolder | undefined,
diff --git a/lldb/tools/lldb-dap/src-ts/lldb-dap-server.ts b/lldb/tools/lldb-dap/src-ts/lldb-dap-server.ts
index 79573ec7342b1..9ceedeb39b9ed 100644
--- a/lldb/tools/lldb-dap/src-ts/lldb-dap-server.ts
+++ b/lldb/tools/lldb-dap/src-ts/lldb-dap-server.ts
@@ -12,6 +12,13 @@ export class LLDBDapServer implements vscode.Disposable {
private serverProcess?: child_process.ChildProcessWithoutNullStreams;
private serverInfo?: Promise<{ host: string; port: number }>;
+ constructor() {
+ vscode.commands.registerCommand(
+ "lldb-dap.getServerProcess",
+ () => this.serverProcess,
+ );
+ }
+
/**
* Starts the server with the provided options. The server will be restarted or reused as
* necessary.
``````````
</details>
https://github.com/llvm/llvm-project/pull/151827
More information about the lldb-commits
mailing list