[Lldb-commits] [lldb] dfc65ef - [lldb][lldb-dap] show modules pane if supported by the adapter (#140603)
via lldb-commits
lldb-commits at lists.llvm.org
Tue May 20 15:29:38 PDT 2025
Author: Ebuka Ezike
Date: 2025-05-20T23:29:34+01:00
New Revision: dfc65ef65e4e92fee244c0eed7ec9223fc943b65
URL: https://github.com/llvm/llvm-project/commit/dfc65ef65e4e92fee244c0eed7ec9223fc943b65
DIFF: https://github.com/llvm/llvm-project/commit/dfc65ef65e4e92fee244c0eed7ec9223fc943b65.diff
LOG: [lldb][lldb-dap] show modules pane if supported by the adapter (#140603)
Fixes #140589
Added logic to dynamically set the `lldb-dap.showModules` context based
on the presence of modules in the debug session.
Added:
Modified:
lldb/tools/lldb-dap/package.json
lldb/tools/lldb-dap/src-ts/debug-session-tracker.ts
lldb/tools/lldb-dap/src-ts/ui/modules-data-provider.ts
Removed:
################################################################################
diff --git a/lldb/tools/lldb-dap/package.json b/lldb/tools/lldb-dap/package.json
index d5ca604798799..7f90d5535b54b 100644
--- a/lldb/tools/lldb-dap/package.json
+++ b/lldb/tools/lldb-dap/package.json
@@ -787,7 +787,7 @@
{
"id": "lldb-dap.modules",
"name": "Modules",
- "when": "inDebugMode && debugType == 'lldb-dap'",
+ "when": "inDebugMode && debugType == 'lldb-dap' && lldb-dap.showModules",
"icon": "$(symbol-module)"
}
]
diff --git a/lldb/tools/lldb-dap/src-ts/debug-session-tracker.ts b/lldb/tools/lldb-dap/src-ts/debug-session-tracker.ts
index 1ce190938d9c7..50db1e1c3a7b0 100644
--- a/lldb/tools/lldb-dap/src-ts/debug-session-tracker.ts
+++ b/lldb/tools/lldb-dap/src-ts/debug-session-tracker.ts
@@ -35,14 +35,24 @@ export class DebugSessionTracker
* The modules are kept in an array to maintain the load order of the modules.
*/
private modules = new Map<vscode.DebugSession, DebugProtocol.Module[]>();
- private modulesChanged = new vscode.EventEmitter<void>();
+ private modulesChanged = new vscode.EventEmitter<
+ vscode.DebugSession | undefined
+ >();
/**
* Fired when modules are changed for any active debug session.
*
* Use `debugSessionModules` to retieve the active modules for a given debug session.
*/
- onDidChangeModules: vscode.Event<void> = this.modulesChanged.event;
+ onDidChangeModules: vscode.Event<vscode.DebugSession | undefined> =
+ this.modulesChanged.event;
+
+ constructor() {
+ this.onDidChangeModules(this.moduleChangedListener, this);
+ vscode.debug.onDidChangeActiveDebugSession((session) =>
+ this.modulesChanged.fire(session),
+ );
+ }
dispose() {
this.modules.clear();
@@ -70,7 +80,27 @@ export class DebugSessionTracker
/** Clear information from the active session. */
private onExit(session: vscode.DebugSession) {
this.modules.delete(session);
- this.modulesChanged.fire();
+ this.modulesChanged.fire(undefined);
+ }
+
+ private showModulesTreeView(showModules: boolean) {
+ vscode.commands.executeCommand(
+ "setContext",
+ "lldb-dap.showModules",
+ showModules,
+ );
+ }
+
+ private moduleChangedListener(session: vscode.DebugSession | undefined) {
+ if (!session) {
+ this.showModulesTreeView(false);
+ return;
+ }
+
+ if (session == vscode.debug.activeDebugSession) {
+ const sessionHasModules = this.modules.get(session) != undefined;
+ this.showModulesTreeView(sessionHasModules);
+ }
}
private onDidSendMessage(
@@ -103,7 +133,7 @@ export class DebugSessionTracker
break;
}
this.modules.set(session, modules);
- this.modulesChanged.fire();
+ this.modulesChanged.fire(session);
}
}
}
diff --git a/lldb/tools/lldb-dap/src-ts/ui/modules-data-provider.ts b/lldb/tools/lldb-dap/src-ts/ui/modules-data-provider.ts
index 091c1d69ac647..d0fb9270c734f 100644
--- a/lldb/tools/lldb-dap/src-ts/ui/modules-data-provider.ts
+++ b/lldb/tools/lldb-dap/src-ts/ui/modules-data-provider.ts
@@ -52,9 +52,6 @@ export class ModulesDataProvider implements vscode.TreeDataProvider<TreeData> {
constructor(private readonly tracker: DebugSessionTracker) {
tracker.onDidChangeModules(() => this.changeTreeData.fire());
- vscode.debug.onDidChangeActiveDebugSession(() =>
- this.changeTreeData.fire(),
- );
}
getTreeItem(module: TreeData): vscode.TreeItem {
More information about the lldb-commits
mailing list