/* * Copyright (C) 2019 Intel Corporation. All rights reserved. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ import * as vscode from 'vscode'; import * as os from 'os'; /* see https://github.com/llvm/llvm-project/tree/main/lldb/tools/lldb-vscode#attaching-settings */ export interface WasmDebugConfig { type: string, name: string, request: string, program? : string, pid?: string, stopOnEntry?: boolean, waitFor?: boolean, initCommands?: string[], preRunCommands?: string[], stopCommands?: string[], exitCommands?: string[], terminateCommands?: string[], attachCommands?: string[] } export class WasmDebugConfigurationProvider implements vscode.DebugConfigurationProvider { private wasmDebugConfig: WasmDebugConfig = { type: 'wamr-debug', name: 'Attach', request: 'attach', stopOnEntry: true, attachCommands: [ /* default port 1234 */ 'process connect -p wasm connect://127.0.0.1:1234', ] }; constructor(extensionPath: string) { this.wasmDebugConfig.initCommands = [ /* Add rust formatters -> https://lldb.llvm.org/use/variable.html */ `command script import ${extensionPath}/formatters/rust.py` ]; if (os.platform() === 'win32' || os.platform() === 'darwin') { this.wasmDebugConfig.initCommands.push('platform select remote-linux'); } } public resolveDebugConfiguration( _: vscode.WorkspaceFolder | undefined, debugConfiguration: vscode.DebugConfiguration, ): vscode.ProviderResult { this.wasmDebugConfig = { ...this.wasmDebugConfig, ...debugConfiguration }; return this.wasmDebugConfig; } public getDebugConfig(): vscode.DebugConfiguration { return this.wasmDebugConfig; } }