[lldb-dap] Validate server mode support prior to invoking lldb-dap. (#130855)

This should ensure the extension only uses server mode if the binary
supports the feature, otherwise it will fallback to the existing
behavior.

Fixes #130854
This commit is contained in:
John Harrison
2025-03-12 10:43:09 -07:00
committed by GitHub
parent caf301891a
commit f62e168d3f

View File

@@ -93,6 +93,11 @@ async function getDAPExecutable(
return undefined;
}
async function isServerModeSupported(exe: string): Promise<boolean> {
const { stdout } = await exec(exe, ['--help']);
return /--connection/.test(stdout);
}
/**
* This class defines a factory used to find the lldb-dap binary to use
* depending on the session configuration.
@@ -145,7 +150,7 @@ export class LLDBDapDescriptorFactory
const dbgArgs = executable?.args ?? [];
const serverMode = config.get<boolean>('serverMode', false);
if (serverMode) {
if (serverMode && await isServerModeSupported(dapPath)) {
const { host, port } = await this.startServer(dapPath, dbgArgs, dbgOptions);
return new vscode.DebugAdapterServer(port, host);
}