[Lldb-commits] [lldb] [vscode-lldb] Add VS Code commands for high level debug workflow (PR #151827)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Aug 5 09:26:33 PDT 2025
https://github.com/royitaqi updated https://github.com/llvm/llvm-project/pull/151827
>From 14c3fc997de307c00199e22e23b2f665147964fc Mon Sep 17 00:00:00 2001
From: Roy Shi <royshi at meta.com>
Date: Sat, 2 Aug 2025 09:04:18 -0700
Subject: [PATCH] [lldb] [vscode-lldb] Add VS Code commands that can be
leveraged by other debugger extensions
---
.../lldb-dap/src-ts/debug-adapter-factory.ts | 10 ++++++++
.../src-ts/debug-configuration-provider.ts | 24 ++++++++++++++++++-
lldb/tools/lldb-dap/src-ts/lldb-dap-server.ts | 7 ++++++
3 files changed, 40 insertions(+), 1 deletion(-)
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.
More information about the lldb-commits
mailing list