[Lldb-commits] [lldb] [lldb-dap] Allow providing debug adapter arguments in the extension (PR #129262)
John Harrison via lldb-commits
lldb-commits at lists.llvm.org
Fri Mar 14 15:18:00 PDT 2025
================
@@ -0,0 +1,103 @@
+import * as vscode from "vscode";
+import * as child_process from "child_process";
+import * as util from "util";
+import { LLDBDapServer } from "./lldb-dap-server";
+import { createDebugAdapterExecutable } from "./debug-adapter-factory";
+import { ConfigureButton, showErrorMessage } from "./ui/show-error-message";
+import { ErrorWithNotification } from "./ui/error-with-notification";
+
+const exec = util.promisify(child_process.execFile);
+
+/**
+ * Determines whether or not the given lldb-dap executable supports executing
+ * in server mode.
+ *
+ * @param exe the path to the lldb-dap executable
+ * @returns a boolean indicating whether or not lldb-dap supports server mode
+ */
+async function isServerModeSupported(exe: string): Promise<boolean> {
+ const { stdout } = await exec(exe, ["--help"]);
+ return /--connection/.test(stdout);
+}
+
+export class LLDBDapConfigurationProvider
+ implements vscode.DebugConfigurationProvider
+{
+ constructor(private readonly server: LLDBDapServer) {}
+
+ async resolveDebugConfiguration(
+ folder: vscode.WorkspaceFolder | undefined,
+ debugConfiguration: vscode.DebugConfiguration,
----------------
ashgti wrote:
I wonder if we should have our own type + validator for the debugConfiguration
Something along the lines of:
```ts
interface LLDBDebugConfiguration extends vscode.DebugConfiguration {
type: 'lldb-dap';
request: 'launch' | 'attach';
program: string;
args?: string[];
env?: Record<string, string>;
debugAdapterHostname?: string;
initCommands?: string[];
stopOnEntry?: boolean;
}
...
async resolveDebugConfiguration(folder, config) {
assert(config, isLLDBDebugConfiguration);
// config is of type LLDBDebugConfiguration
```
[TypeScript Playground example](https://www.typescriptlang.org/play/?target=9#code/PTAEFkEECUGkC5QDUCGAbAlgExQFwwPYB2oAEgKZoAO5ATgM4BQjuAnjaAMLG7kAeuUAF5Q9XLQxEA5gG0AugG4W7cqAAKeABbDR4ybMXM2HACoqA4gFcUtLAB5JoApcEmAfDoDejUKAAUAG7oiJZEANZEBADuRACUiEFooBj0oCZKvoHBoKER0UQANKAAxjz8uIjcRLwCRVRaAPyIGria8aCJyanpPqBS1rYAcigAtuSIYhLSSgC+yhyw5KyomDi4BLR27l6gMmrJJGFLBABmaXKIZjRWNvYme3JuCqAzSownocX4xKBY5CeScg3WxbNxZVZ4DaIcEhcKRGJFUrVcqVMq1UD1VpNdRaWLCDydFJpIr9W7DMYTPTSArtK5AgZ3DzeXxociCUm2HQwnJw-KItEVLgCnTyOpaDS0XD0ZpaEVyPFCJm9XxIsRdFbYHSJbCQ2jg-nI9GYzQSqWxDK+ZJnPwAQhSGqweOZlpVxDVxp0xtN9AAdKzpK1QA1QAByABiG1DoAA1BjxTYpT6AFYESR+ABE6bxsfTiHToEQIZDFpdSJquB9VEs9E0fgABgASTzGmYAUT4NC+5CwoCbHKw5PIMxJBEETYAUgBlADygx9k30GBOrHBsRmdfNypeW9obMstBI9vQ2Atr16fn7oBQ3QsDNBsR9-cHOifo3IFt3uH3JEv17St9uUFZmYVVBBSAAhAgCFZFASBEP4ASIelAIAIygmCiDBVd8VAYxyFODp0GEIQRBDNDoPIWCQyKMj0MoogQ03UCuknKkpB0BDAWBewF2kLDEgVDw8IIzoSNI3ipGo0MJMYpRmJSacUKTcgvg4-4uLvAglJU3B+PQQTcJUESiLE0MtOUr4Q1AAAyazQBtG1Eho8ydNk95Pm+Q96AAGQwXhaHQLZQHKcgiCwVIiEsEYULoUAAB9dCmdiEvIjCwR9DLMEFe55UuACQW2Z1P2-X51KQ7i-FXBIiKJEwcKyn1JGKNBLD+ehwSvbpYiKRtPAa-0pEDUyAEYg1ALKZAABjkAszKQpwzis2MGpTNMpMY9dNzmD4iC+QgvMgWgAtYacTlBcEdXWWg8uuO93CdXpioPUrEOQ2xKqckoBTFVp2kJbp5Bw51fCXfwbUO47GvoCGUBXAS8SekgTnQeh3x3PdnsSH1yACOgV0CIoMAM7U1g2AmvsNXAihkDKfT8D0GmDeRutAOsZCbDAZjkOt5U3Xxh1ZmHWDsJsSd1R8GUHGY3A3YCdr2n4UmgFSNiwU7zrFq6brexkHt8RGXo024PvQA1yx+tpqqSIlldKEEJKKbZFVAYGrTBhTtK+fUKfNuNfoRjGkZRtGXQNxSLIrUK9HIdqBOx3HaHxmQjlYIpEksch5RwlJWKSvwU7N8pqdp+nZUZ3Z5R6mQQybFOZhDbms9swiISu8EM8L9EaYy0vA3L5mq5rzw64bnnYj5l4ett1W7Ad3tPE1jYJbJN9pdlxhto8-aumnKhPMC9wLtJ67-1uwD7pdx7A8N8qGRNtBO6pv3LZbroeU4pCewSurnddg3hLOKJEioZQgf27FZYM4gM6zUXnqT6ZYi7PwngLOsu995oBFgvY8x9l5DFXjLLa7ldqeRYlAr450wgBAdLqRAixljYN1KCIoeFByUiSnrUABswEVW9ggo0uIrZvx-kqF0oNbQewjrw76SCA5fmesjNAqMSycOvuHHS2NqgSBjvnKhDCrqdVANPe2bFHb5XsLkeEmE3APhxnjSqyclhpz0RsLOv8twg2tDaZWJxWRfB9Joa83sU54mbo5ZxtBcEDjfPOXACZ6AAHU-K1hDGg-agVGIcJdK6SmlZqy1l6saBofpQqDW0MGXuZSmbymTKmIgGYswxlDIWWaRYZjgBSPQfQKiACOlgMC7h7CnUMtclj13Xlky0BsFFKPcduCZBtYF+G8b4isUg2RBKWCzPhT9u50wZlUlmbMh4j0bhPfmyDmEqEHIQohCsSDXlRpKDW2QLF8j6AybW3EmGgBGPQKQ2IJLtAeXQKUr9aqX2yWqbZbD9CAxEPIC0YibT9ikZTceELLSskEPUSUqQRDbJ9LuBOqM-BnLdn4X5Ug8Q4sTFWGsFK-lkqxcFI6kYRA0t9KtOp6YAA6RAszKNaLQaIoAkJRFAK2Vleo6DCtoMgjezAQAQBgAgcaaAsAoQALQ4CoBTAE-QAqeWYJIfyyNiiqG8t5AAIuBK15AUKWCkFUfV+48Db2dHhQsaB1Vap1cWK+vSY6ChDGgFAnxNBWQSiGPAsTigRotFQYVUgAojBhdMXoNgpD0ABWxBFvRQoBGxEYniJjEr6CeL0P4DqpCQB1f5UgBAxBEDfDmpKiKiB+W4CMEYsFwqtthYYXwYgCBUGnEQVsmjWDYlSvRC0wAABUoBaagHncABVjB5I+Wtba+1jrnUYANW6n4Igc5kNwHYS1Nq7XVv3YezyYIPUqEQCkXy-l0B+BDT67VKAqCMQKAGjOYhn0+T8nQd9Iaw27QjTRGNKA41-t6ImggybRjAdzvof9vhM3Sh3nvNJaA-ApCFqdQj9B0PSHHph4KRAAjAdScQd9SsVa2BI6e9h3VK27prXWugDam1vjo3hhjBG2P6A4yDDtuAu09rCjhhSQnm0iehkdWGrGyNsUo70Ydo7x2TsE+g0jkEKKwQ4wLEM1693EBdYa-ablGBKpMEG3CmhVCwN9BlZg8sSG8DEJAegjzz2H0SLCPICJ3m3E+XdNwRRKX9ooxi8QrAMVYf8yC72-YYuMtPCUPAcb-DkEyRTegFE-TIYzJwMNUhNC4HTEUArp510+dwH5gLfhPCGRoF6r9fqii7kDUB0Mobw3QYOJ2gg3be04erigKSAAmOQdQk0psLJoDAVkBYvu3RZp1VmD2us8puJrLW0vtc9YN7rP6pJ9cA8G2D8HCaSek5NxA025sLeo7Rl2AskModTaGVb63CZbqvVx29+39qbiAA)
This would help with the inline type validation being performed here.
I could also follow up this CL with some of these validations. I think they could also help the URL launching service as well.
https://github.com/llvm/llvm-project/pull/129262
More information about the lldb-commits
mailing list