将jar添加到vscode调试扩展

时间:2019-07-16 11:43:47

标签: visual-studio-code

我们为ABL语言的DAP(调试器Adapater协议)提供了一个可运行的jar,并且我们计划为该ABL DAP添加vscode扩展。

您能给我们提供一些文档或给我们一些想法吗?

1 个答案:

答案 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"
                  }
              }
          );
      }
  });
}