https://github.com/ashgti updated 
https://github.com/llvm/llvm-project/pull/137694

>From 7de424db38e5decff9ce511bea9ff07f32509391 Mon Sep 17 00:00:00 2001
From: John Harrison <harj...@google.com>
Date: Mon, 28 Apr 2025 12:11:52 -0700
Subject: [PATCH 1/3] [lldb-dap] Adding defaults to VSCode settings for user
 level defaults.

This adds support for loading user level defaults in VSCode. The defaults are 
stored as basic settings that are loaded when the debug configuration is 
resolved. Not all settings are currently supported, I limited it to settings 
that would likely apply across multiple launch.json configurations.
---
 lldb/tools/lldb-dap/package.json              | 107 +++++++++++++++++-
 .../src-ts/debug-configuration-provider.ts    |  84 +++++++++++++-
 2 files changed, 187 insertions(+), 4 deletions(-)

diff --git a/lldb/tools/lldb-dap/package.json b/lldb/tools/lldb-dap/package.json
index 1ef42b4a0d95c..d3efb5126e080 100644
--- a/lldb/tools/lldb-dap/package.json
+++ b/lldb/tools/lldb-dap/package.json
@@ -72,7 +72,6 @@
       "title": "lldb-dap",
       "properties": {
         "lldb-dap.executable-path": {
-          "scope": "resource",
           "type": "string",
           "scope": "machine-overridable",
           "description": "The path to the lldb-dap binary, e.g. 
/usr/local/bin/lldb-dap"
@@ -105,6 +104,112 @@
           "type": "boolean",
           "markdownDescription": "Run lldb-dap in server mode.\n\nWhen 
enabled, lldb-dap will start a background server that will be reused between 
debug sessions. This allows caching of debug symbols between sessions and 
improves launch performance.",
           "default": false
+        },
+        "lldb-dap.defaults.commandEscapePrefix": {
+          "type": "string",
+          "description": "The escape prefix to use for executing regular LLDB 
commands in the Debug Console, instead of printing variables. Defaults to a 
back-tick (`). If it's an empty string, then all expression in the Debug 
Console are treated as regular LLDB commands.",
+          "default": "`"
+        },
+        "lldb-dap.defaults.customFrameFormat": {
+          "type": "string",
+          "description": "If non-empty, stack frames will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for frames. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default frame names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+          "default": ""
+        },
+        "lldb-dap.defaults.customThreadFormat": {
+          "type": "string",
+          "description": "If non-empty, threads will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for threads. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default thread names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+          "default": ""
+        },
+        "lldb-dap.defaults.detachOnError": {
+          "type": "boolean",
+          "description": "Detach from the program.",
+          "default": false
+        },
+        "lldb-dap.defaults.disableASLR": {
+          "type": "boolean",
+          "description": "Enable or disable Address space layout randomization 
if the debugger supports it.",
+          "default": true
+        },
+        "lldb-dap.defaults.disableSTDIO": {
+          "type": "boolean",
+          "description": "Don't retrieve STDIN, STDOUT and STDERR as the 
program is running.",
+          "default": false
+        },
+        "lldb-dap.defaults.displayExtendedBacktrace": {
+          "type": "boolean",
+          "description": "Enable language specific extended backtraces.",
+          "default": false
+        },
+        "lldb-dap.defaults.enableAutoVariableSummaries": {
+          "type": "boolean",
+          "description": "Enable auto generated summaries for variables when 
no summaries exist for a given type. This feature can cause performance delays 
in large projects when viewing variables.",
+          "default": false
+        },
+        "lldb-dap.defaults.enableSyntheticChildDebugging": {
+          "type": "boolean",
+          "description": "If a variable is displayed using a synthetic 
children, also display the actual contents of the variable at the end under a 
[raw] entry. This is useful when creating sythetic child plug-ins as it lets 
you see the actual contents of the variable.",
+          "default": false
+        },
+        "lldb-dap.defaults.timeout": {
+          "type": "number",
+          "description": "The time in seconds to wait for a program to stop at 
entry point when launching with \"launchCommands\". Defaults to 30 seconds.",
+          "default": 30
+        },
+        "lldb-dap.defaults.targetTriple": {
+          "type": "string",
+          "description": "Triplet of the target architecture to override value 
derived from the program file."
+        },
+        "lldb-dap.defaults.platformName": {
+          "type": "string",
+          "description": "Name of the execution platform to override value 
derived from the program file."
+        },
+        "lldb-dap.defaults.initCommands": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "Initialization commands executed upon debugger 
startup.",
+          "default": []
+        },
+        "lldb-dap.defaults.preRunCommands": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "Commands executed just before the program is 
launched.",
+          "default": []
+        },
+        "lldb-dap.defaults.postRunCommands": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "Commands executed just as soon as the program is 
successfully launched when it's in a stopped state prior to any automatic 
continuation.",
+          "default": []
+        },
+        "lldb-dap.defaults.stopCommands": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "Commands executed each time the program stops.",
+          "default": []
+        },
+        "lldb-dap.defaults.exitCommands": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "Commands executed when the program exits.",
+          "default": []
+        },
+        "lldb-dap.defaults.terminateCommands": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "Commands executed when the debugging session ends.",
+          "default": []
         }
       }
     },
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 8d92139c02a00..8a4089008b2f9 100644
--- a/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts
+++ b/lldb/tools/lldb-dap/src-ts/debug-configuration-provider.ts
@@ -20,10 +20,88 @@ async function isServerModeSupported(exe: string): 
Promise<boolean> {
   return /--connection/.test(stdout);
 }
 
+interface BoolConfig {
+  type: 'boolean';
+  default: boolean;
+}
+interface StringConfig {
+  type: 'string';
+  default: string;
+}
+interface NumberConfig {
+  type: 'number';
+  default: number;
+}
+interface StringArrayConfig {
+  type: 'stringArray';
+  default: string[];
+}
+type DefaultConfig = BoolConfig | NumberConfig | StringConfig | 
StringArrayConfig;
+
+const configurations: Record<string, DefaultConfig> = {
+  // Keys for debugger configurations.
+  "commandEscapePrefix": { type: "string", default: "`" },
+  "customFrameFormat": { type: "string", default: "" },
+  "customThreadFormat": { type: "string", default: "" },
+  "detachOnError": { type: "boolean", default: false },
+  "disableASLR": { type: "boolean", default: true },
+  "disableSTDIO": { type: "boolean", default: false },
+  "displayExtendedBacktrace": { type: "boolean", default: false },
+  "enableAutoVariableSummaries": { type: "boolean", default: false },
+  "enableSyntheticChildDebugging": { type: "boolean", default: false },
+  "timeout": { type: "number", default: 30 },
+
+  // Keys for platform / target configuration.
+  "platformName": { type: "string", default: "" },
+  "targetTriple": { type: "string", default: "" },
+
+  // Keys for debugger command hooks.
+  "initCommands": { type: "stringArray", default: [] },
+  "preRunCommands": { type: "stringArray", default: [] },
+  "postRunCommands": { type: "stringArray", default: [] },
+  "stopCommands": { type: "stringArray", default: [] },
+  "exitCommands": { type: "stringArray", default: [] },
+  "terminateCommands": { type: "stringArray", default: [] },
+};
+
 export class LLDBDapConfigurationProvider
-  implements vscode.DebugConfigurationProvider
-{
-  constructor(private readonly server: LLDBDapServer) {}
+  implements vscode.DebugConfigurationProvider {
+  constructor(private readonly server: LLDBDapServer) { }
+
+  async resolveDebugConfiguration(
+    folder: vscode.WorkspaceFolder | undefined,
+    debugConfiguration: vscode.DebugConfiguration,
+    token?: vscode.CancellationToken): Promise<vscode.DebugConfiguration> {
+    let config = vscode.workspace.getConfiguration('lldb-dap.defaults');
+    for (const [key, cfg] of Object.entries(configurations)) {
+      if (Reflect.has(debugConfiguration, key)) continue;
+      const value = config.get(key);
+      if (value === cfg.default) continue;
+      switch (cfg.type) {
+        case 'string':
+          if (typeof value !== 'string')
+            throw new Error(`Expected ${key} to be a string, got ${value}`);
+          break;
+        case 'number':
+          if (typeof value !== 'number')
+            throw new Error(`Expected ${key} to be a number, got ${value}`);
+          break;
+        case 'boolean':
+          if (typeof value !== 'boolean')
+            throw new Error(`Expected ${key} to be a boolean, got ${value}`);
+          break;
+        case 'stringArray':
+          if (typeof value !== 'object' && Array.isArray(value))
+            throw new Error(`Expected ${key} to be a array of strings, got 
${value}`);
+          if ((value as string[]).length === 0) continue;
+          break;
+      }
+
+      debugConfiguration[key] = value;
+    }
+
+    return debugConfiguration;
+  }
 
   async resolveDebugConfigurationWithSubstitutedVariables(
     folder: vscode.WorkspaceFolder | undefined,

>From 059ea3b5a5a62b06072234b409b9dd75582b09ac Mon Sep 17 00:00:00 2001
From: John Harrison <harj...@google.com>
Date: Mon, 28 Apr 2025 19:31:47 -0700
Subject: [PATCH 2/3] Updating the lldb-dap README about user setting defaults.

---
 lldb/tools/lldb-dap/README.md | 63 ++++++++++++++++++++++++++---------
 1 file changed, 47 insertions(+), 16 deletions(-)

diff --git a/lldb/tools/lldb-dap/README.md b/lldb/tools/lldb-dap/README.md
index 2f6a51a591914..18bfa9d518b98 100644
--- a/lldb/tools/lldb-dap/README.md
+++ b/lldb/tools/lldb-dap/README.md
@@ -6,12 +6,13 @@ The extension requires the `lldb-dap` (formerly 
`lldb-vscode`) binary.
 This binary is not packaged with the VS Code extension.
 
 There are multiple ways to obtain this binary:
-* Use the binary provided by your toolchain (for example `xcrun -f lldb-dap` 
on macOS) or contact your toolchain vendor to include it.
-* Download one of the relase packages from the [LLVM release 
page](https://github.com/llvm/llvm-project/releases/). The 
`LLVM-19.1.0-{operating_system}.tar.xz` packages contain a prebuilt `lldb-dap` 
binary.
-* Build it from source (see [LLDB's build 
instructions](https://lldb.llvm.org/resources/build.html)).
+
+- Use the binary provided by your toolchain (for example `xcrun -f lldb-dap` 
on macOS) or contact your toolchain vendor to include it.
+- Download one of the release packages from the [LLVM release 
page](https://github.com/llvm/llvm-project/releases/). The 
`LLVM-19.1.0-{operating_system}.tar.xz` packages contain a prebuilt `lldb-dap` 
binary.
+- Build it from source (see [LLDB's build 
instructions](https://lldb.llvm.org/resources/build.html)).
 
 By default, the VS Code extension will expect to find `lldb-dap` in your 
`PATH`.
-Alternatively, you can explictly specify the location of the `lldb-dap` binary 
using the `lldb-dap.executable-path` setting.
+Alternatively, you can explicitly specify the location of the `lldb-dap` 
binary using the `lldb-dap.executable-path` setting.
 
 ### Usage with other IDEs
 
@@ -144,7 +145,7 @@ instead of using the custom command `attachCommands`.
 ### Connect to a Debug Server on Another Machine
 
 This connects to a debug server running on another machine with hostname
-`hostnmame`. Which is debugging the program `/tmp/a.out` and listening on
+`hostname`. Which is debugging the program `/tmp/a.out` and listening on
 port `5678` of that other machine.
 
 ```javascript
@@ -162,7 +163,6 @@ to send an attach request to a debug server running on a 
different machine,
 instead of custom command `attachCommands`.
 The default hostname being used `localhost`.
 
-
 ```javascript
 {
   "name": "Local Debug Server",
@@ -212,7 +212,7 @@ specific key/value pairs:
 | **customThreadFormat**            | string      |     | Same as 
`customFrameFormat`, but for threads instead of stack frames.
 | **displayExtendedBacktrace**      | bool        |     | Enable language 
specific extended backtraces.
 | **enableAutoVariableSummaries**   | bool        |     | Enable auto 
generated summaries for variables when no summaries exist for a given type. 
This feature can cause performance delays in large projects when viewing 
variables.
-| **enableSyntheticChildDebugging** | bool        |     | If a variable is 
displayed using a synthetic children, also display the actual contents of the 
variable at the end under a [raw] entry. This is useful when creating sythetic 
child plug-ins as it lets you see the actual contents of the variable.
+| **enableSyntheticChildDebugging** | bool        |     | If a variable is 
displayed using a synthetic children, also display the actual contents of the 
variable at the end under a [raw] entry. This is useful when creating synthetic 
child plug-ins as it lets you see the actual contents of the variable.
 | **initCommands**                  | [string]    |     | LLDB commands 
executed upon debugger startup prior to creating the LLDB target.
 | **preRunCommands**                | [string]    |     | LLDB commands 
executed just before launching/attaching, after the LLDB target has been 
created.
 | **stopCommands**                  | [string]    |     | LLDB commands 
executed just after each stop.
@@ -221,8 +221,9 @@ specific key/value pairs:
 
 All commands and command outputs will be sent to the debugger console when 
they are executed.
 Commands can be prefixed with `?` or `!` to modify their behavior:
-* Commands prefixed with `?` are quiet on success, i.e. nothing is written to 
stdout if the command succeeds.
-* Prefixing a command with `!` enables error checking: If a command prefixed 
with `!` fails, subsequent commands will not be run. This is usefule if one of 
the commands depends on another, as it will stop the chain of commands.
+
+- Commands prefixed with `?` are quiet on success, i.e. nothing is written to 
stdout if the command succeeds.
+- Prefixing a command with `!` enables error checking: If a command prefixed 
with `!` fails, subsequent commands will not be run. This is useful if one of 
the commands depends on another, as it will stop the chain of commands.
 
 For JSON configurations of `"type": "launch"`, the JSON configuration can 
additionally
 contain the following key/value pairs:
@@ -243,10 +244,40 @@ the following `lldb-dap` specific key/value pairs:
 | Parameter                         | Type        | Req |         |
 |-----------------------------------|-------------|:---:|---------|
 | **program**                       | string      |     | Path to the 
executable to attach to. This value is optional but can help to resolve 
breakpoints prior the attaching to the program.
-| **pid**                           | number      |     | The process id of 
the process you wish to attach to. If **pid** is omitted, the debugger will 
attempt to attach to the program by finding a process whose file name matches 
the file name from **porgram**. Setting this value to 
`${command:pickMyProcess}` will allow interactive process selection in the IDE.
+| **pid**                           | number      |     | The process id of 
the process you wish to attach to. If **pid** is omitted, the debugger will 
attempt to attach to the program by finding a process whose file name matches 
the file name from **program**. Setting this value to 
`${command:pickMyProcess}` will allow interactive process selection in the IDE.
 | **waitFor**                       | boolean     |     | Wait for the process 
to launch.
 | **attachCommands**                | [string]    |     | LLDB commands that 
will be executed after **preRunCommands** which take place of the code that 
normally does the attach. The commands can create a new target and attach or 
launch it however desired. This allows custom launch and attach configurations. 
Core files can use `target create --core /path/to/core` to attach to core files.
 
+### Configuring `lldb-dap` defaults
+
+User settings can set the default value for the following supported
+`launch.json` configuration keys:
+
+| Parameter                         | Type     | Default |
+| --------------------------------- | -------- | :-----: |
+| **commandEscapePrefix**           | string   | ``"`"`` |
+| **customFrameFormat**             | string   |  `""`   |
+| **customThreadFormat**            | string   |  `""`   |
+| **detachOnError**                 | boolean  | `false` |
+| **disableASLR**                   | boolean  | `true`  |
+| **disableSTDIO**                  | boolean  | `false` |
+| **displayExtendedBacktrace**      | boolean  | `false` |
+| **enableAutoVariableSummaries**   | boolean  | `false` |
+| **enableSyntheticChildDebugging** | boolean  | `false` |
+| **timeout**                       | number   |  `30`   |
+| **targetTriple**                  | string   |  `""`   |
+| **platformName**                  | string   |  `""`   |
+| **initCommands**                  | [string] |  `[]`   |
+| **preRunCommands**                | [string] |  `[]`   |
+| **postRunCommands**               | [string] |  `[]`   |
+| **stopCommands**                  | [string] |  `[]`   |
+| **exitCommands**                  | [string] |  `[]`   |
+| **terminateCommands**             | [string] |  `[]`   |
+
+To adjust your settings, open the Settings editor via the 
+`File > Preferences > Settings` menu or press `Ctrl+`, on Windows/Linux and
+`Cmd+`, on Mac.
+
 ## Debug Console
 
 The Debug Console allows printing variables / expressions and executing lldb 
commands.
@@ -294,13 +325,13 @@ Inspect or adjust the behavior of lldb-dap repl 
evaluation requests. The
 supported modes are `variable`, `command` and `auto`.
 
 - `variable` - Variable mode expressions are evaluated in the context of the
-   current frame.
+  current frame.
 - `command` - Command mode expressions are evaluated as lldb commands, as a
-   result, values printed by lldb are always stringified representations of the
-   expression output.
+  result, values printed by lldb are always stringified representations of the
+  expression output.
 - `auto` - Auto mode will attempt to infer if the expression represents an lldb
-   command or a variable expression. A heuristic is used to infer if the input
-   represents a variable or a command.
+  command or a variable expression. A heuristic is used to infer if the input
+  represents a variable or a command.
 
 In all three modes, you can use the `commandEscapePrefix` to ensure an 
expression
 is evaluated as a command.
@@ -330,7 +361,7 @@ For example you can use a launch configuration hook to 
trigger custom events lik
   "program": "exe",
   "stopCommands": [
     "lldb-dap send-event MyStopEvent",
-    "lldb-dap send-event MyStopEvent '{\"key\": 321}",
+    "lldb-dap send-event MyStopEvent '{\"key\": 321}"
   ]
 }
 ```

>From 25e7883b4b7ab4b7c4eff6570c032bfc2dd633b5 Mon Sep 17 00:00:00 2001
From: John Harrison <harj...@google.com>
Date: Tue, 29 Apr 2025 13:23:41 -0700
Subject: [PATCH 3/3] Breaking the 'configuration' into two settings groups for
 a better presentation in the UI and adding an explicit 'order'.

---
 lldb/tools/lldb-dap/package.json | 1312 +++++++++++++++---------------
 1 file changed, 670 insertions(+), 642 deletions(-)

diff --git a/lldb/tools/lldb-dap/package.json b/lldb/tools/lldb-dap/package.json
index e67d9a7a79da6..4734c9d7277bb 100644
--- a/lldb/tools/lldb-dap/package.json
+++ b/lldb/tools/lldb-dap/package.json
@@ -68,673 +68,701 @@
         "path": "./syntaxes/disassembly.json"
       }
     ],
-    "configuration": {
-      "type": "object",
-      "title": "lldb-dap",
-      "properties": {
-        "lldb-dap.executable-path": {
-          "type": "string",
-          "scope": "machine-overridable",
-          "type": "string",
-          "description": "The path to the lldb-dap binary, e.g. 
/usr/local/bin/lldb-dap"
-        },
-        "lldb-dap.arguments": {
-          "scope": "resource",
-          "type": "array",
-          "default": [],
-          "items": {
-            "type": "string"
+    "configuration": [
+      {
+        "type": "object",
+        "title": "Adapter",
+        "properties": {
+          "lldb-dap.executable-path": {
+            "order": 0,
+            "scope": "machine-overridable",
+            "type": "string",
+            "description": "The path to the lldb-dap binary, e.g. 
/usr/local/bin/lldb-dap"
           },
-          "description": "The list of additional arguments used to launch the 
debug adapter executable."
-        },
-        "lldb-dap.log-path": {
-          "scope": "machine-overridable",
-          "type": "string",
-          "description": "The log path for lldb-dap (if any)"
-        },
-        "lldb-dap.environment": {
-          "scope": "resource",
-          "type": "object",
-          "default": {},
-          "description": "The environment of the lldb-dap process.",
-          "additionalProperties": {
-            "type": "string"
+          "lldb-dap.log-path": {
+            "order": 0,
+            "scope": "machine-overridable",
+            "type": "string",
+            "description": "The log path for lldb-dap (if any)"
+          },
+          "lldb-dap.serverMode": {
+            "order": 0,
+            "scope": "resource",
+            "type": "boolean",
+            "markdownDescription": "Run lldb-dap in server mode.\n\nWhen 
enabled, lldb-dap will start a background server that will be reused between 
debug sessions. This allows caching of debug symbols between sessions and 
improves launch performance.",
+            "default": false
+          },
+          "lldb-dap.arguments": {
+            "scope": "resource",
+            "type": "array",
+            "default": [],
+            "items": {
+              "type": "string"
+            },
+            "description": "The list of additional arguments used to launch 
the debug adapter executable."
+          },
+          "lldb-dap.environment": {
+            "scope": "resource",
+            "type": "object",
+            "default": {},
+            "description": "The environment of the lldb-dap process.",
+            "additionalProperties": {
+              "type": "string"
+            }
           }
-        },
-        "lldb-dap.serverMode": {
-          "scope": "resource",
-          "type": "boolean",
-          "markdownDescription": "Run lldb-dap in server mode.\n\nWhen 
enabled, lldb-dap will start a background server that will be reused between 
debug sessions. This allows caching of debug symbols between sessions and 
improves launch performance.",
-          "default": false
-        },
-        "lldb-dap.defaults.commandEscapePrefix": {
-          "type": "string",
-          "description": "The escape prefix to use for executing regular LLDB 
commands in the Debug Console, instead of printing variables. Defaults to a 
back-tick (`). If it's an empty string, then all expression in the Debug 
Console are treated as regular LLDB commands.",
-          "default": "`"
-        },
-        "lldb-dap.defaults.customFrameFormat": {
-          "type": "string",
-          "description": "If non-empty, stack frames will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for frames. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default frame names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
-          "default": ""
-        },
-        "lldb-dap.defaults.customThreadFormat": {
-          "type": "string",
-          "description": "If non-empty, threads will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for threads. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default thread names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
-          "default": ""
-        },
-        "lldb-dap.defaults.detachOnError": {
-          "type": "boolean",
-          "description": "Detach from the program.",
-          "default": false
-        },
-        "lldb-dap.defaults.disableASLR": {
-          "type": "boolean",
-          "description": "Enable or disable Address space layout randomization 
if the debugger supports it.",
-          "default": true
-        },
-        "lldb-dap.defaults.disableSTDIO": {
-          "type": "boolean",
-          "description": "Don't retrieve STDIN, STDOUT and STDERR as the 
program is running.",
-          "default": false
-        },
-        "lldb-dap.defaults.displayExtendedBacktrace": {
-          "type": "boolean",
-          "description": "Enable language specific extended backtraces.",
-          "default": false
-        },
-        "lldb-dap.defaults.enableAutoVariableSummaries": {
-          "type": "boolean",
-          "description": "Enable auto generated summaries for variables when 
no summaries exist for a given type. This feature can cause performance delays 
in large projects when viewing variables.",
-          "default": false
-        },
-        "lldb-dap.defaults.enableSyntheticChildDebugging": {
-          "type": "boolean",
-          "description": "If a variable is displayed using a synthetic 
children, also display the actual contents of the variable at the end under a 
[raw] entry. This is useful when creating sythetic child plug-ins as it lets 
you see the actual contents of the variable.",
-          "default": false
-        },
-        "lldb-dap.defaults.timeout": {
-          "type": "number",
-          "description": "The time in seconds to wait for a program to stop at 
entry point when launching with \"launchCommands\". Defaults to 30 seconds.",
-          "default": 30
-        },
-        "lldb-dap.defaults.targetTriple": {
-          "type": "string",
-          "description": "Triplet of the target architecture to override value 
derived from the program file."
-        },
-        "lldb-dap.defaults.platformName": {
-          "type": "string",
-          "description": "Name of the execution platform to override value 
derived from the program file."
-        },
-        "lldb-dap.defaults.initCommands": {
-          "type": "array",
-          "items": {
-            "type": "string"
+        }
+      },
+      {
+        "title": "Defaults",
+        "type": "object",
+        "properties": {
+          "lldb-dap.commandEscapePrefix": {
+            "order": 0,
+            "type": "string",
+            "description": "The escape prefix to use for executing regular 
LLDB commands in the Debug Console, instead of printing variables. Defaults to 
a back-tick (`). If it's an empty string, then all expression in the Debug 
Console are treated as regular LLDB commands.",
+            "default": "`"
           },
-          "description": "Initialization commands executed upon debugger 
startup.",
-          "default": []
-        },
-        "lldb-dap.defaults.preRunCommands": {
-          "type": "array",
-          "items": {
-            "type": "string"
+          "lldb-dap.customFrameFormat": {
+            "order": 0,
+            "type": "string",
+            "description": "If non-empty, stack frames will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for frames. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default frame names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+            "default": ""
           },
-          "description": "Commands executed just before the program is 
launched.",
-          "default": []
-        },
-        "lldb-dap.defaults.postRunCommands": {
-          "type": "array",
-          "items": {
-            "type": "string"
+          "lldb-dap.customThreadFormat": {
+            "order": 0,
+            "type": "string",
+            "description": "If non-empty, threads will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for threads. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default thread names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+            "default": ""
           },
-          "description": "Commands executed just as soon as the program is 
successfully launched when it's in a stopped state prior to any automatic 
continuation.",
-          "default": []
-        },
-        "lldb-dap.defaults.stopCommands": {
-          "type": "array",
-          "items": {
-            "type": "string"
+          "lldb-dap.detachOnError": {
+            "order": 0,
+            "type": "boolean",
+            "description": "Detach from the program.",
+            "default": false
           },
-          "description": "Commands executed each time the program stops.",
-          "default": []
-        },
-        "lldb-dap.defaults.exitCommands": {
-          "type": "array",
-          "items": {
-            "type": "string"
+          "lldb-dap.disableASLR": {
+            "order": 0,
+            "type": "boolean",
+            "description": "Enable or disable Address space layout 
randomization if the debugger supports it.",
+            "default": true
           },
-          "description": "Commands executed when the program exits.",
-          "default": []
-        },
-        "lldb-dap.defaults.terminateCommands": {
-          "type": "array",
-          "items": {
-            "type": "string"
+          "lldb-dap.disableSTDIO": {
+            "order": 0,
+            "type": "boolean",
+            "description": "Don't retrieve STDIN, STDOUT and STDERR as the 
program is running.",
+            "default": false
+          },
+          "lldb-dap.displayExtendedBacktrace": {
+            "order": 0,
+            "type": "boolean",
+            "description": "Enable language specific extended backtraces.",
+            "default": false
+          },
+          "lldb-dap.enableAutoVariableSummaries": {
+            "order": 0,
+            "type": "boolean",
+            "description": "Enable auto generated summaries for variables when 
no summaries exist for a given type. This feature can cause performance delays 
in large projects when viewing variables.",
+            "default": false
+          },
+          "lldb-dap.enableSyntheticChildDebugging": {
+            "order": 0,
+            "type": "boolean",
+            "description": "If a variable is displayed using a synthetic 
children, also display the actual contents of the variable at the end under a 
[raw] entry. This is useful when creating sythetic child plug-ins as it lets 
you see the actual contents of the variable.",
+            "default": false
+          },
+          "lldb-dap.timeout": {
+            "order": 0,
+            "type": "number",
+            "description": "The time in seconds to wait for a program to stop 
at entry point when launching with \"launchCommands\". Defaults to 30 seconds.",
+            "default": 30
+          },
+          "lldb-dap.targetTriple": {
+            "order": 1,
+            "type": "string",
+            "description": "Triplet of the target architecture to override 
value derived from the program file."
+          },
+          "lldb-dap.platformName": {
+            "order": 1,
+            "type": "string",
+            "description": "Name of the execution platform to override value 
derived from the program file."
+          },
+          "lldb-dap.initCommands": {
+            "order": 2,
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "Initialization commands executed upon debugger 
startup.",
+            "default": []
           },
-          "description": "Commands executed when the debugging session ends.",
-          "default": []
+          "lldb-dap.preRunCommands": {
+            "order": 3,
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "Commands executed just before the program is 
launched.",
+            "default": []
+          },
+          "lldb-dap.postRunCommands": {
+            "order": 4,
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "Commands executed just as soon as the program is 
successfully launched when it's in a stopped state prior to any automatic 
continuation.",
+            "default": []
+          },
+          "lldb-dap.stopCommands": {
+            "order": 5,
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "Commands executed each time the program stops.",
+            "default": []
+          },
+          "lldb-dap.exitCommands": {
+            "order": 6,
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "Commands executed when the program exits.",
+            "default": []
+          },
+          "lldb-dap.terminateCommands": {
+            "order": 7,
+            "type": "array",
+            "items": {
+              "type": "string"
+            },
+            "description": "Commands executed when the debugging session 
ends.",
+            "default": []
+          }
         }
       }
+    ]
+  },
+  "breakpoints": [
+    {
+      "language": "ada"
     },
-    "breakpoints": [
-      {
-        "language": "ada"
-      },
-      {
-        "language": "arm"
-      },
-      {
-        "language": "asm"
-      },
-      {
-        "language": "c"
-      },
-      {
-        "language": "cpp"
-      },
-      {
-        "language": "crystal"
-      },
-      {
-        "language": "d"
-      },
-      {
-        "language": "fortan"
-      },
-      {
-        "language": "fortran-modern"
-      },
-      {
-        "language": "nim"
-      },
-      {
-        "language": "objective-c"
-      },
-      {
-        "language": "objectpascal"
-      },
-      {
-        "language": "pascal"
-      },
-      {
-        "language": "rust"
-      },
-      {
-        "language": "swift"
-      }
-    ],
-    "debuggers": [
-      {
-        "type": "lldb-dap",
-        "label": "LLDB DAP Debugger",
-        "configurationAttributes": {
-          "launch": {
-            "required": [
-              "program"
-            ],
-            "properties": {
-              "debugAdapterHostname": {
-                "type": "string",
-                "markdownDescription": "The hostname that an existing lldb-dap 
executable is listening on."
-              },
-              "debugAdapterPort": {
-                "type": "number",
-                "markdownDescription": "The port that an existing lldb-dap 
executable is listening on."
-              },
-              "debugAdapterExecutable": {
-                "type": "string",
-                "markdownDescription": "The absolute path to the LLDB debug 
adapter executable to use. Overrides any user or workspace settings."
-              },
-              "debugAdapterArgs": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "markdownDescription": "The list of additional arguments used 
to launch the debug adapter executable. Overrides any user or workspace 
settings."
-              },
-              "program": {
-                "type": "string",
-                "description": "Path to the program to debug."
-              },
-              "args": {
-                "type": [
-                  "array"
-                ],
-                "items": {
-                  "type": "string"
+    {
+      "language": "arm"
+    },
+    {
+      "language": "asm"
+    },
+    {
+      "language": "c"
+    },
+    {
+      "language": "cpp"
+    },
+    {
+      "language": "crystal"
+    },
+    {
+      "language": "d"
+    },
+    {
+      "language": "fortan"
+    },
+    {
+      "language": "fortran-modern"
+    },
+    {
+      "language": "nim"
+    },
+    {
+      "language": "objective-c"
+    },
+    {
+      "language": "objectpascal"
+    },
+    {
+      "language": "pascal"
+    },
+    {
+      "language": "rust"
+    },
+    {
+      "language": "swift"
+    }
+  ],
+  "debuggers": [
+    {
+      "type": "lldb-dap",
+      "label": "LLDB DAP Debugger",
+      "configurationAttributes": {
+        "launch": {
+          "required": [
+            "program"
+          ],
+          "properties": {
+            "debugAdapterHostname": {
+              "type": "string",
+              "markdownDescription": "The hostname that an existing lldb-dap 
executable is listening on."
+            },
+            "debugAdapterPort": {
+              "type": "number",
+              "markdownDescription": "The port that an existing lldb-dap 
executable is listening on."
+            },
+            "debugAdapterExecutable": {
+              "type": "string",
+              "markdownDescription": "The absolute path to the LLDB debug 
adapter executable to use. Overrides any user or workspace settings."
+            },
+            "debugAdapterArgs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "markdownDescription": "The list of additional arguments used to 
launch the debug adapter executable. Overrides any user or workspace settings."
+            },
+            "program": {
+              "type": "string",
+              "description": "Path to the program to debug."
+            },
+            "args": {
+              "type": [
+                "array"
+              ],
+              "items": {
+                "type": "string"
+              },
+              "description": "Program arguments.",
+              "default": []
+            },
+            "cwd": {
+              "type": "string",
+              "description": "Program working directory.",
+              "default": "${workspaceRoot}"
+            },
+            "env": {
+              "anyOf": [
+                {
+                  "type": "object",
+                  "description": "Additional environment variables to set when 
launching the program. E.g. `{ \"FOO\": \"1\" }`",
+                  "patternProperties": {
+                    ".*": {
+                      "type": "string"
+                    }
+                  },
+                  "default": {}
                 },
-                "description": "Program arguments.",
-                "default": []
-              },
-              "cwd": {
-                "type": "string",
-                "description": "Program working directory.",
-                "default": "${workspaceRoot}"
-              },
-              "env": {
-                "anyOf": [
-                  {
-                    "type": "object",
-                    "description": "Additional environment variables to set 
when launching the program. E.g. `{ \"FOO\": \"1\" }`",
-                    "patternProperties": {
-                      ".*": {
-                        "type": "string"
-                      }
-                    },
-                    "default": {}
+                {
+                  "type": "array",
+                  "description": "Additional environment variables to set when 
launching the program. E.g. `[\"FOO=1\", \"BAR\"]`",
+                  "items": {
+                    "type": "string",
+                    "pattern": "^((\\w+=.*)|^\\w+)$"
                   },
-                  {
-                    "type": "array",
-                    "description": "Additional environment variables to set 
when launching the program. E.g. `[\"FOO=1\", \"BAR\"]`",
-                    "items": {
-                      "type": "string",
-                      "pattern": "^((\\w+=.*)|^\\w+)$"
-                    },
-                    "default": []
-                  }
-                ]
-              },
-              "stopOnEntry": {
-                "type": "boolean",
-                "description": "Automatically stop after launch.",
-                "default": false
-              },
-              "disableASLR": {
-                "type": "boolean",
-                "description": "Enable or disable Address space layout 
randomization if the debugger supports it.",
-                "default": true
-              },
-              "disableSTDIO": {
-                "type": "boolean",
-                "description": "Don't retrieve STDIN, STDOUT and STDERR as the 
program is running.",
-                "default": false
-              },
-              "shellExpandArguments": {
-                "type": "boolean",
-                "description": "Expand program arguments as a shell would 
without actually launching the program in a shell.",
-                "default": false
-              },
-              "detachOnError": {
-                "type": "boolean",
-                "description": "Detach from the program.",
-                "default": false
-              },
-              "sourcePath": {
-                "type": "string",
-                "description": "Specify a source path to remap \"./\" to allow 
full paths to be used when setting breakpoints in binaries that have relative 
source paths."
-              },
-              "sourceMap": {
-                "anyOf": [
-                  {
-                    "type": "object",
-                    "description": "Specify an object of path remappings; each 
entry has a key containing the source path and a value containing the 
destination path. E.g `{ \"/the/source/path\": \"/the/destination/path\" }`. 
Overrides sourcePath.",
-                    "patternProperties": {
-                      ".*": {
-                        "type": "string"
-                      }
-                    },
-                    "default": {}
+                  "default": []
+                }
+              ]
+            },
+            "stopOnEntry": {
+              "type": "boolean",
+              "description": "Automatically stop after launch.",
+              "default": false
+            },
+            "disableASLR": {
+              "type": "boolean",
+              "description": "Enable or disable Address space layout 
randomization if the debugger supports it.",
+              "default": true
+            },
+            "disableSTDIO": {
+              "type": "boolean",
+              "description": "Don't retrieve STDIN, STDOUT and STDERR as the 
program is running.",
+              "default": false
+            },
+            "shellExpandArguments": {
+              "type": "boolean",
+              "description": "Expand program arguments as a shell would 
without actually launching the program in a shell.",
+              "default": false
+            },
+            "detachOnError": {
+              "type": "boolean",
+              "description": "Detach from the program.",
+              "default": false
+            },
+            "sourcePath": {
+              "type": "string",
+              "description": "Specify a source path to remap \"./\" to allow 
full paths to be used when setting breakpoints in binaries that have relative 
source paths."
+            },
+            "sourceMap": {
+              "anyOf": [
+                {
+                  "type": "object",
+                  "description": "Specify an object of path remappings; each 
entry has a key containing the source path and a value containing the 
destination path. E.g `{ \"/the/source/path\": \"/the/destination/path\" }`. 
Overrides sourcePath.",
+                  "patternProperties": {
+                    ".*": {
+                      "type": "string"
+                    }
                   },
-                  {
+                  "default": {}
+                },
+                {
+                  "type": "array",
+                  "description": "Specify an array of path remappings; each 
element must itself be a two element array containing a source and destination 
path name. Overrides sourcePath.",
+                  "items": {
                     "type": "array",
-                    "description": "Specify an array of path remappings; each 
element must itself be a two element array containing a source and destination 
path name. Overrides sourcePath.",
+                    "minItems": 2,
+                    "maxItems": 2,
                     "items": {
-                      "type": "array",
-                      "minItems": 2,
-                      "maxItems": 2,
-                      "items": {
-                        "type": "string"
-                      }
-                    },
-                    "default": []
-                  }
-                ]
-              },
-              "debuggerRoot": {
-                "type": "string",
-                "description": "Specify a working directory to set the debug 
adapter to so relative object files can be located."
-              },
-              "targetTriple": {
-                "type": "string",
-                "description": "Triplet of the target architecture to override 
value derived from the program file."
-              },
-              "platformName": {
-                "type": "string",
-                "description": "Name of the execution platform to override 
value derived from the program file."
-              },
-              "initCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Initialization commands executed upon debugger 
startup.",
-                "default": []
-              },
-              "preRunCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed just before the program is 
launched.",
-                "default": []
-              },
-              "postRunCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed just as soon as the program 
is successfully launched when it's in a stopped state prior to any automatic 
continuation.",
-                "default": []
-              },
-              "launchCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Custom commands that are executed instead of 
launching a process. A target will be created with the launch arguments prior 
to executing these commands. The commands may optionally create a new target 
and must perform a launch. A valid process must exist after these commands 
complete or the \"launch\" will fail. Launch the process with \"process launch 
-s\" to make the process to at the entry point since lldb-dap will auto resume 
if necessary.",
-                "default": []
-              },
-              "stopCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed each time the program 
stops.",
-                "default": []
-              },
-              "exitCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed when the program exits.",
-                "default": []
-              },
-              "terminateCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed when the debugging session 
ends.",
-                "default": []
-              },
-              "runInTerminal": {
-                "type": "boolean",
-                "description": "Launch the program inside an integrated 
terminal in the IDE. Useful for debugging interactive command line programs",
-                "default": false
-              },
-              "timeout": {
-                "type": "number",
-                "description": "The time in seconds to wait for a program to 
stop at entry point when launching with \"launchCommands\". Defaults to 30 
seconds."
-              },
-              "enableAutoVariableSummaries": {
-                "type": "boolean",
-                "description": "Enable auto generated summaries for variables 
when no summaries exist for a given type. This feature can cause performance 
delays in large projects when viewing variables.",
-                "default": false
-              },
-              "displayExtendedBacktrace": {
-                "type": "boolean",
-                "description": "Enable language specific extended backtraces.",
-                "default": false
-              },
-              "enableSyntheticChildDebugging": {
-                "type": "boolean",
-                "description": "If a variable is displayed using a synthetic 
children, also display the actual contents of the variable at the end under a 
[raw] entry. This is useful when creating sythetic child plug-ins as it lets 
you see the actual contents of the variable.",
-                "default": false
-              },
-              "commandEscapePrefix": {
-                "type": "string",
-                "description": "The escape prefix to use for executing regular 
LLDB commands in the Debug Console, instead of printing variables. Defaults to 
a back-tick (`). If it's an empty string, then all expression in the Debug 
Console are treated as regular LLDB commands.",
-                "default": "`"
-              },
-              "customFrameFormat": {
-                "type": "string",
-                "description": "If non-empty, stack frames will have 
descriptions generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for frames. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default frame names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
-                "default": ""
-              },
-              "customThreadFormat": {
-                "type": "string",
-                "description": "If non-empty, threads will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for threads. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default thread names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
-                "default": ""
-              }
+                      "type": "string"
+                    }
+                  },
+                  "default": []
+                }
+              ]
+            },
+            "debuggerRoot": {
+              "type": "string",
+              "description": "Specify a working directory to set the debug 
adapter to so relative object files can be located."
+            },
+            "targetTriple": {
+              "type": "string",
+              "description": "Triplet of the target architecture to override 
value derived from the program file."
+            },
+            "platformName": {
+              "type": "string",
+              "description": "Name of the execution platform to override value 
derived from the program file."
+            },
+            "initCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Initialization commands executed upon debugger 
startup.",
+              "default": []
+            },
+            "preRunCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed just before the program is 
launched.",
+              "default": []
+            },
+            "postRunCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed just as soon as the program is 
successfully launched when it's in a stopped state prior to any automatic 
continuation.",
+              "default": []
+            },
+            "launchCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Custom commands that are executed instead of 
launching a process. A target will be created with the launch arguments prior 
to executing these commands. The commands may optionally create a new target 
and must perform a launch. A valid process must exist after these commands 
complete or the \"launch\" will fail. Launch the process with \"process launch 
-s\" to make the process to at the entry point since lldb-dap will auto resume 
if necessary.",
+              "default": []
+            },
+            "stopCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed each time the program stops.",
+              "default": []
+            },
+            "exitCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed when the program exits.",
+              "default": []
+            },
+            "terminateCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed when the debugging session 
ends.",
+              "default": []
+            },
+            "runInTerminal": {
+              "type": "boolean",
+              "description": "Launch the program inside an integrated terminal 
in the IDE. Useful for debugging interactive command line programs",
+              "default": false
+            },
+            "timeout": {
+              "type": "number",
+              "description": "The time in seconds to wait for a program to 
stop at entry point when launching with \"launchCommands\". Defaults to 30 
seconds."
+            },
+            "enableAutoVariableSummaries": {
+              "type": "boolean",
+              "description": "Enable auto generated summaries for variables 
when no summaries exist for a given type. This feature can cause performance 
delays in large projects when viewing variables.",
+              "default": false
+            },
+            "displayExtendedBacktrace": {
+              "type": "boolean",
+              "description": "Enable language specific extended backtraces.",
+              "default": false
+            },
+            "enableSyntheticChildDebugging": {
+              "type": "boolean",
+              "description": "If a variable is displayed using a synthetic 
children, also display the actual contents of the variable at the end under a 
[raw] entry. This is useful when creating sythetic child plug-ins as it lets 
you see the actual contents of the variable.",
+              "default": false
+            },
+            "commandEscapePrefix": {
+              "type": "string",
+              "description": "The escape prefix to use for executing regular 
LLDB commands in the Debug Console, instead of printing variables. Defaults to 
a back-tick (`). If it's an empty string, then all expression in the Debug 
Console are treated as regular LLDB commands.",
+              "default": "`"
+            },
+            "customFrameFormat": {
+              "type": "string",
+              "description": "If non-empty, stack frames will have 
descriptions generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for frames. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default frame names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+              "default": ""
+            },
+            "customThreadFormat": {
+              "type": "string",
+              "description": "If non-empty, threads will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for threads. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default thread names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+              "default": ""
             }
-          },
-          "attach": {
-            "properties": {
-              "debugAdapterHostname": {
-                "type": "string",
-                "markdownDescription": "The hostname that an existing lldb-dap 
executable is listening on."
-              },
-              "debugAdapterPort": {
-                "type": "number",
-                "markdownDescription": "The port that an existing lldb-dap 
executable is listening on."
-              },
-              "debugAdapterExecutable": {
-                "type": "string",
-                "markdownDescription": "The absolute path to the LLDB debug 
adapter executable to use. Overrides any user or workspace settings."
-              },
-              "debugAdapterArgs": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "markdownDescription": "The list of additional arguments used 
to launch the debug adapter executable. Overrides any user or workspace 
settings."
-              },
-              "program": {
-                "type": "string",
-                "description": "Path to the program to attach to."
-              },
-              "pid": {
-                "type": [
-                  "number",
-                  "string"
-                ],
-                "description": "System process ID to attach to."
-              },
-              "waitFor": {
-                "type": "boolean",
-                "description": "If set to true, then wait for the process to 
launch by looking for a process with a basename that matches `program`. No 
process ID needs to be specified when using this flag.",
-                "default": true
-              },
-              "sourcePath": {
-                "type": "string",
-                "description": "Specify a source path to remap \"./\" to allow 
full paths to be used when setting breakpoints in binaries that have relative 
source paths."
-              },
-              "sourceMap": {
-                "anyOf": [
-                  {
-                    "type": "object",
-                    "description": "Specify an object of path remappings; each 
entry has a key containing the source path and a value containing the 
destination path. E.g `{ \"/the/source/path\": \"/the/destination/path\" }`. 
Overrides sourcePath.",
-                    "patternProperties": {
-                      ".*": {
-                        "type": "string"
-                      }
-                    },
-                    "default": {}
+          }
+        },
+        "attach": {
+          "properties": {
+            "debugAdapterHostname": {
+              "type": "string",
+              "markdownDescription": "The hostname that an existing lldb-dap 
executable is listening on."
+            },
+            "debugAdapterPort": {
+              "type": "number",
+              "markdownDescription": "The port that an existing lldb-dap 
executable is listening on."
+            },
+            "debugAdapterExecutable": {
+              "type": "string",
+              "markdownDescription": "The absolute path to the LLDB debug 
adapter executable to use. Overrides any user or workspace settings."
+            },
+            "debugAdapterArgs": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "markdownDescription": "The list of additional arguments used to 
launch the debug adapter executable. Overrides any user or workspace settings."
+            },
+            "program": {
+              "type": "string",
+              "description": "Path to the program to attach to."
+            },
+            "pid": {
+              "type": [
+                "number",
+                "string"
+              ],
+              "description": "System process ID to attach to."
+            },
+            "waitFor": {
+              "type": "boolean",
+              "description": "If set to true, then wait for the process to 
launch by looking for a process with a basename that matches `program`. No 
process ID needs to be specified when using this flag.",
+              "default": true
+            },
+            "sourcePath": {
+              "type": "string",
+              "description": "Specify a source path to remap \"./\" to allow 
full paths to be used when setting breakpoints in binaries that have relative 
source paths."
+            },
+            "sourceMap": {
+              "anyOf": [
+                {
+                  "type": "object",
+                  "description": "Specify an object of path remappings; each 
entry has a key containing the source path and a value containing the 
destination path. E.g `{ \"/the/source/path\": \"/the/destination/path\" }`. 
Overrides sourcePath.",
+                  "patternProperties": {
+                    ".*": {
+                      "type": "string"
+                    }
                   },
-                  {
+                  "default": {}
+                },
+                {
+                  "type": "array",
+                  "description": "Specify an array of path remappings; each 
element must itself be a two element array containing a source and destination 
path name. Overrides sourcePath.",
+                  "items": {
                     "type": "array",
-                    "description": "Specify an array of path remappings; each 
element must itself be a two element array containing a source and destination 
path name. Overrides sourcePath.",
+                    "minItems": 2,
+                    "maxItems": 2,
                     "items": {
-                      "type": "array",
-                      "minItems": 2,
-                      "maxItems": 2,
-                      "items": {
-                        "type": "string"
-                      }
-                    },
-                    "default": []
-                  }
-                ]
-              },
-              "debuggerRoot": {
-                "type": "string",
-                "description": "Specify a working directory to set the debug 
adapter to so relative object files can be located."
-              },
-              "targetTriple": {
-                "type": "string",
-                "description": "Triplet of the target architecture to override 
value derived from the program file."
-              },
-              "platformName": {
-                "type": "string",
-                "description": "Name of the execution platform to override 
value derived from the program file."
-              },
-              "attachCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Custom commands that are executed instead of 
attaching to a process ID or to a process by name. These commands may 
optionally create a new target and must perform an attach. A valid process must 
exist after these commands complete or the \"attach\" will fail.",
-                "default": []
-              },
-              "initCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Initialization commands executed upon debugger 
startup.",
-                "default": []
-              },
-              "preRunCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed just before the program is 
attached to.",
-                "default": []
-              },
-              "postRunCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed just as soon as the program 
is successfully attached when it's in a stopped state prior to any automatic 
continuation.",
-                "default": []
-              },
-              "stopCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed each time the program 
stops.",
-                "default": []
-              },
-              "exitCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed when the program exits.",
-                "default": []
-              },
-              "terminateCommands": {
-                "type": "array",
-                "items": {
-                  "type": "string"
-                },
-                "description": "Commands executed when the debugging session 
ends.",
-                "default": []
-              },
-              "coreFile": {
-                "type": "string",
-                "description": "Path to the core file to debug."
-              },
-              "timeout": {
-                "type": "number",
-                "description": "The time in seconds to wait for a program to 
stop when attaching using \"attachCommands\". Defaults to 30 seconds."
-              },
-              "gdb-remote-port": {
-                "type": [
-                  "number",
-                  "string"
-                ],
-                "description": "TCP/IP port to attach to a remote system. 
Specifying both pid and port is an error."
-              },
-              "gdb-remote-hostname": {
-                "type": "string",
-                "description": "The hostname to connect to a remote system. 
The default hostname being used localhost."
-              },
-              "enableAutoVariableSummaries": {
-                "type": "boolean",
-                "description": "Enable auto generated summaries for variables 
when no summaries exist for a given type. This feature can cause performance 
delays in large projects when viewing variables.",
-                "default": false
-              },
-              "displayExtendedBacktrace": {
-                "type": "boolean",
-                "description": "Enable language specific extended backtraces.",
-                "default": false
-              },
-              "enableSyntheticChildDebugging": {
-                "type": "boolean",
-                "description": "If a variable is displayed using a synthetic 
children, also display the actual contents of the variable at the end under a 
[raw] entry. This is useful when creating sythetic child plug-ins as it lets 
you see the actual contents of the variable.",
-                "default": false
-              },
-              "commandEscapePrefix": {
-                "type": "string",
-                "description": "The escape prefix character to use for 
executing regular LLDB commands in the Debug Console, instead of printing 
variables. Defaults to a back-tick (`). If empty, then all expression in the 
Debug Console are treated as regular LLDB commands.",
-                "default": "`"
-              },
-              "customFrameFormat": {
-                "type": "string",
-                "description": "If non-empty, stack frames will have 
descriptions generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for frames. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default frame names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
-                "default": ""
-              },
-              "customThreadFormat": {
-                "type": "string",
-                "description": "If non-empty, threads will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for threads. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default thread names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
-                "default": ""
-              }
+                      "type": "string"
+                    }
+                  },
+                  "default": []
+                }
+              ]
+            },
+            "debuggerRoot": {
+              "type": "string",
+              "description": "Specify a working directory to set the debug 
adapter to so relative object files can be located."
+            },
+            "targetTriple": {
+              "type": "string",
+              "description": "Triplet of the target architecture to override 
value derived from the program file."
+            },
+            "platformName": {
+              "type": "string",
+              "description": "Name of the execution platform to override value 
derived from the program file."
+            },
+            "attachCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Custom commands that are executed instead of 
attaching to a process ID or to a process by name. These commands may 
optionally create a new target and must perform an attach. A valid process must 
exist after these commands complete or the \"attach\" will fail.",
+              "default": []
+            },
+            "initCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Initialization commands executed upon debugger 
startup.",
+              "default": []
+            },
+            "preRunCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed just before the program is 
attached to.",
+              "default": []
+            },
+            "postRunCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed just as soon as the program is 
successfully attached when it's in a stopped state prior to any automatic 
continuation.",
+              "default": []
+            },
+            "stopCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed each time the program stops.",
+              "default": []
+            },
+            "exitCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed when the program exits.",
+              "default": []
+            },
+            "terminateCommands": {
+              "type": "array",
+              "items": {
+                "type": "string"
+              },
+              "description": "Commands executed when the debugging session 
ends.",
+              "default": []
+            },
+            "coreFile": {
+              "type": "string",
+              "description": "Path to the core file to debug."
+            },
+            "timeout": {
+              "type": "number",
+              "description": "The time in seconds to wait for a program to 
stop when attaching using \"attachCommands\". Defaults to 30 seconds."
+            },
+            "gdb-remote-port": {
+              "type": [
+                "number",
+                "string"
+              ],
+              "description": "TCP/IP port to attach to a remote system. 
Specifying both pid and port is an error."
+            },
+            "gdb-remote-hostname": {
+              "type": "string",
+              "description": "The hostname to connect to a remote system. The 
default hostname being used localhost."
+            },
+            "enableAutoVariableSummaries": {
+              "type": "boolean",
+              "description": "Enable auto generated summaries for variables 
when no summaries exist for a given type. This feature can cause performance 
delays in large projects when viewing variables.",
+              "default": false
+            },
+            "displayExtendedBacktrace": {
+              "type": "boolean",
+              "description": "Enable language specific extended backtraces.",
+              "default": false
+            },
+            "enableSyntheticChildDebugging": {
+              "type": "boolean",
+              "description": "If a variable is displayed using a synthetic 
children, also display the actual contents of the variable at the end under a 
[raw] entry. This is useful when creating sythetic child plug-ins as it lets 
you see the actual contents of the variable.",
+              "default": false
+            },
+            "commandEscapePrefix": {
+              "type": "string",
+              "description": "The escape prefix character to use for executing 
regular LLDB commands in the Debug Console, instead of printing variables. 
Defaults to a back-tick (`). If empty, then all expression in the Debug Console 
are treated as regular LLDB commands.",
+              "default": "`"
+            },
+            "customFrameFormat": {
+              "type": "string",
+              "description": "If non-empty, stack frames will have 
descriptions generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for frames. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default frame names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+              "default": ""
+            },
+            "customThreadFormat": {
+              "type": "string",
+              "description": "If non-empty, threads will have descriptions 
generated based on the provided format. See 
https://lldb.llvm.org/use/formatting.html for an explanation on format strings 
for threads. If the format string contains errors, an error message will be 
displayed on the Debug Console and the default thread names will be used. This 
might come with a performance cost because debug information might need to be 
processed to generate the description.",
+              "default": ""
             }
           }
-        },
-        "initialConfigurations": [
-          {
+        }
+      },
+      "initialConfigurations": [
+        {
+          "type": "lldb-dap",
+          "request": "launch",
+          "name": "Debug",
+          "program": "${workspaceRoot}/<your program>",
+          "args": [],
+          "env": [],
+          "cwd": "${workspaceRoot}"
+        }
+      ],
+      "configurationSnippets": [
+        {
+          "label": "LLDB: Launch",
+          "description": "",
+          "body": {
             "type": "lldb-dap",
             "request": "launch",
-            "name": "Debug",
-            "program": "${workspaceRoot}/<your program>",
+            "name": "${2:Launch}",
+            "program": "^\"\\${workspaceRoot}/${1:<your program>}\"",
             "args": [],
             "env": [],
-            "cwd": "${workspaceRoot}"
+            "cwd": "^\"\\${workspaceRoot}\""
           }
-        ],
-        "configurationSnippets": [
-          {
-            "label": "LLDB: Launch",
-            "description": "",
-            "body": {
-              "type": "lldb-dap",
-              "request": "launch",
-              "name": "${2:Launch}",
-              "program": "^\"\\${workspaceRoot}/${1:<your program>}\"",
-              "args": [],
-              "env": [],
-              "cwd": "^\"\\${workspaceRoot}\""
-            }
-          },
-          {
-            "label": "LLDB: Attach",
-            "description": "",
-            "body": {
-              "type": "lldb-dap",
-              "request": "attach",
-              "name": "${2:Attach}",
-              "program": "${1:<your program>}",
-              "waitFor": true
-            }
-          },
-          {
-            "label": "LLDB: Load Coredump",
-            "description": "",
-            "body": {
-              "type": "lldb-dap",
-              "request": "attach",
-              "name": "${2:Core}",
-              "program": "${1:<your program>}",
-              "coreFile": "${1:<your program>}.core"
-            }
+        },
+        {
+          "label": "LLDB: Attach",
+          "description": "",
+          "body": {
+            "type": "lldb-dap",
+            "request": "attach",
+            "name": "${2:Attach}",
+            "program": "${1:<your program>}",
+            "waitFor": true
           }
-        ]
-      }
-    ]
-  }
-}
+        },
+        {
+          "label": "LLDB: Load Coredump",
+          "description": "",
+          "body": {
+            "type": "lldb-dap",
+            "request": "attach",
+            "name": "${2:Core}",
+            "program": "${1:<your program>}",
+            "coreFile": "${1:<your program>}.core"
+          }
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to