【问题标题】:Creating VSCode Debugger Extension创建 VSCode 调试器扩展
【发布时间】:2017-08-31 12:59:49
【问题描述】:

我正在尝试编写一个 VSCode 扩展来支持基本的 SNES 应用程序开发。我已经有一个基本的语法定义和构建任务,所以我有语法突出显示,并且能够使用 Bass v14 汇编器使用 Ctrl+Shift+B 构建我的项目,但现在我正试图弄清楚如何启动该项目使用启动.json。我已经完成了official docs 并使用了模拟调试器项目,但我似乎无法弄清楚如何使其适应我的扩展。首先,我使用 bsnes-plus 模拟器作为我的调试器。实际上没有任何命令行或 IPC 接口可以让我实现适当的调试适配器,所以我真正想做的就是运行程序并将我的输出文件传递给启动。目前,我假设 bsnes-plus.exe 位于我的 $PATH 中,但最终我会尝试找出扩展的外部可执行依赖项的最佳实践。

所以这是我目前的问题:

  • launch.json 的“程序”字段是我编译的应用程序,还是 bsnes-plus.exe?
  • 如果“程序”是我的应用程序,我应该在哪里指定 bsnes-plus.exe?反之亦然。
  • 有没有办法指定我自己的项目级变量,例如$OUTPUT 以便我不必将输出文件名硬编码到构建任务和启动任务中?
  • 在某一时刻,我能够获得启动命令来打开 bsnes-plus,但无法加载游戏,当我关闭它时,VSCode 抱怨调试器意外终止并立即重新打开 bsnes-plus。我该如何避免这种情况?我是否需要编写一个调试适配器,即使它除了启动应用程序实际上不会执行任何操作,以便我可以告诉 VSCode 它干净地退出了吗?

【问题讨论】:

  • 你有想过这个吗?我无处可去阅读调试适配器 API 上的 vscode 文档。除了 C64 VICE 模拟器之外,我正在尝试和你做的基本相同。

标签: visual-studio-code vscode-extensions


【解决方案1】:

launch.json的“程序”字段是我编译的应用程序,还是bsnes-plus.exe?

这完全取决于调试扩展。它只是传递给调试适配器。它通常对应于正在调试的特定应用程序/脚本,而不是运行它的运行时,所以我建议它应该是你编译的应用程序。

如果“程序”是我的应用程序,我在哪里指定 bsnes-plus.exe?反之亦然。

你可以把它放在任何其他领域。在 Dart 中,我们有一个 dartPath 字段,可以传递给调试适配器。它通常由DebugConfigurationProvider.resolveDebugConfig 静默填充(我们通过搜索PATH 检测SDK),因此用户无需添加它。

有没有办法指定我自己的项目级变量,例如$OUTPUT 这样我就不必将输出文件名硬编码到构建任务和启动任务中?

您不能创建自己的变量,但使用 resolveDebugConfig 您可以在将启动配置传递给调试适配器之前自己操作它,这可能允许您在此处执行您需要的操作(例如,您可以执行一个字符串在 program 上替换 - 或者如果未设置,您甚至可以添加它,也允许 launch.json-less 启动)。

我是否需要编写一个调试适配器,即使它除了启动应用程序实际上不会做任何事情,只是为了告诉 VSCode 它干净地退出了吗?

如果没有更多详细信息,我不确定这里发生了什么,但使用调试适配器可能最有意义 - 例如,如果您想让停止/重新启动按钮在工具栏上工作,您可能需要调试可以终止和/或重新启动进程的适配器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2021-11-20
    • 2019-03-07
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多