فهرست منبع

Fix wamr-ide debugger ignoring launch config (#2155)

The `DebugConfigurationProvider` was overwriting configurations provided
in `launch.json`. In particular, this for example prevented from specifying a
custom port for the debugger.

Example `launch.json`
```
{
    "configurations": [
        {
            "type": "wamr-debug",
            "request": "attach",
            "name": "Attach Debugger",
            "stopOnEntry": true,
            "attachCommands": [
                "process connect -p wasm connect://127.0.0.1:1237"
            ]
        }
    ]
}
```

Co-authored-by: Ben Riegel <benjuri@amazon.com>
Ben 2 سال پیش
والد
کامیت
ff0752b4ff

+ 1 - 1
test-tools/wamr-ide/VSCode-Extension/package.json

@@ -6,7 +6,7 @@
     },
     "displayName": "WAMR-IDE",
     "description": "An Integrated Development Environment for WASM",
-    "version": "1.1.2",
+    "version": "1.2.1",
     "engines": {
         "vscode": "^1.59.0"
     },

+ 24 - 43
test-tools/wamr-ide/VSCode-Extension/src/debugConfigurationProvider.ts

@@ -7,52 +7,33 @@ import * as vscode from 'vscode';
 import * as os from 'os';
 
 export class WasmDebugConfigurationProvider
-    implements vscode.DebugConfigurationProvider
-{
-    /* default port set as 1234 */
-    private port = 1234;
-    private hostPath!: string;
-    private providerPromise: Thenable<vscode.DebugConfiguration> | undefined =
-        undefined;
+    implements vscode.DebugConfigurationProvider {
+    private wasmDebugConfig = {
+        type: 'wamr-debug',
+        name: 'Attach',
+        request: 'attach',
+        stopOnEntry: true,
+        initCommands: os.platform() === 'win32' || os.platform() === 'darwin' ?
+            /* linux and windows has different debug configuration */
+            ['platform select remote-linux'] :
+            undefined,
+        attachCommands: [
+            /* default port 1234 */
+            'process connect -p wasm connect://127.0.0.1:1234',
+        ]
+    };
 
-    private wasmDebugConfig!: vscode.DebugConfiguration;
+    public resolveDebugConfiguration(
+        _: vscode.WorkspaceFolder | undefined,
+        debugConfiguration: vscode.DebugConfiguration,
+    ): vscode.ProviderResult<vscode.DebugConfiguration> {
 
-    public resolveDebugConfiguration():
-        | Thenable<vscode.DebugConfiguration>
-        | undefined {
-        if (!this.providerPromise) {
-            this.providerPromise = Promise.resolve(this.wasmDebugConfig);
-            return this.providerPromise;
-        }
-        return this.providerPromise;
-    }
+        this.wasmDebugConfig = {
+            ...this.wasmDebugConfig,
+            ...debugConfiguration
+        };
 
-    public setDebugConfig(hostPath: string, port: number): void {
-        this.port = port;
-        this.hostPath = hostPath;
-        /* linux and windows has different debug configuration */
-        if (os.platform() === 'win32' || os.platform() === 'darwin') {
-            this.wasmDebugConfig = {
-                type: 'wamr-debug',
-                name: 'Attach',
-                request: 'attach',
-                ['stopOnEntry']: true,
-                ['initCommands']: ['platform select remote-linux'],
-                ['attachCommands']: [
-                    'process connect -p wasm connect://127.0.0.1:' + port + '',
-                ],
-            };
-        } else if (os.platform() === 'linux') {
-            this.wasmDebugConfig = {
-                type: 'wamr-debug',
-                name: 'Attach',
-                request: 'attach',
-                ['stopOnEntry']: true,
-                ['attachCommands']: [
-                    'process connect -p wasm connect://127.0.0.1:' + port + '',
-                ],
-            };
-        }
+        return this.wasmDebugConfig;
     }
 
     public getDebugConfig(): vscode.DebugConfiguration {

+ 0 - 1
test-tools/wamr-ide/VSCode-Extension/src/extension.ts

@@ -171,7 +171,6 @@ export async function activate(context: vscode.ExtensionContext) {
 
     /* register debug configuration */
     wasmDebugConfigProvider = new WasmDebugConfigurationProvider();
-    wasmDebugConfigProvider.setDebugConfig(currentPrjDir, 1234);
 
     vscode.debug.registerDebugConfigurationProvider(
         'wamr-debug',