我们为ABL语言的DAP(调试器Adapater协议)提供了一个可运行的jar,并且我们计划为该ABL DAP添加vscode扩展。
您能给我们提供一些文档或给我们一些想法吗?
答案 0 :(得分:0)
基本上有两种方法可以使VS Code运行* .jar:
声明性:
在扩展名package.json
中,您可以将可执行文件注册为debuggers
扩展点的一部分。这是文档:https://code.visualstudio.com/api/extension-guides/debugger-extension#anatomy-of-the-package.json-of-a-debugger-extension。
这是来自node.js调试器的示例。
基本上可以使用以下属性:
"runtime": "node",
"runtimeArgs": [ "--arguments_passed_to_runtime" ],
"program": "./dist/dap.js",
"args": [ "--arguments_passed_to_program" ],
VS Code将调用的结果命令为:
node --arguments_passed_to_runtime ./dist/dap.js --arguments_passed_to_program
您不必在运行时和程序之间进行区分。您可以使用“运行时”或“程序”,而忽略其他。
非声明性: 或者,您可以使用扩展代码来“计算”启动调试适配器时VS Code应该执行的命令。查看此API:https://github.com/microsoft/vscode/blob/4c3769071459718f89bd48fa3b6e806c83cf3336/src/vs/vscode.d.ts#L8797-L8816 基于此API,以下代码片段显示了如何为abl调试器创建DebugAdapterDescriptor:
// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
export function activate(context: ExtensionContext) {
vscode.debug.registerDebugAdapterDescriptorFactory('abl', {
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable | undefined): ProviderResult<DebugAdapterDescriptor> {
return new vscode.DebugAdapterExecutable(
"/usr/bin/java",
[
join(context.extensionPath, "bin", "abl.jar")
],
{
"cwd": "some current working directory path",
"env": {
"key": "value"
}
}
);
}
});
}