From ff0752b4ff5f505186fd7827fb80396e080b9ea7 Mon Sep 17 00:00:00 2001 From: Ben <44849439+MrSarius@users.noreply.github.com> Date: Wed, 10 May 2023 05:47:43 +0100 Subject: [PATCH] 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 --- .../wamr-ide/VSCode-Extension/package.json | 2 +- .../src/debugConfigurationProvider.ts | 67 +++++++------------ .../VSCode-Extension/src/extension.ts | 1 - 3 files changed, 25 insertions(+), 45 deletions(-) diff --git a/test-tools/wamr-ide/VSCode-Extension/package.json b/test-tools/wamr-ide/VSCode-Extension/package.json index bb8a5cee..dfe37961 100644 --- a/test-tools/wamr-ide/VSCode-Extension/package.json +++ b/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" }, diff --git a/test-tools/wamr-ide/VSCode-Extension/src/debugConfigurationProvider.ts b/test-tools/wamr-ide/VSCode-Extension/src/debugConfigurationProvider.ts index 6294f7ef..e7b42bf0 100644 --- a/test-tools/wamr-ide/VSCode-Extension/src/debugConfigurationProvider.ts +++ b/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 | 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 { - public resolveDebugConfiguration(): - | Thenable - | 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 { diff --git a/test-tools/wamr-ide/VSCode-Extension/src/extension.ts b/test-tools/wamr-ide/VSCode-Extension/src/extension.ts index 9d979b7a..523b26b8 100644 --- a/test-tools/wamr-ide/VSCode-Extension/src/extension.ts +++ b/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',