Visual studio code 创建VSCode调试器扩展

Visual studio code 创建VSCode调试器扩展,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我正在尝试编写一个VSCode扩展来支持基本的SNES应用程序开发。我已经有了一个基本的语法定义和构建任务,所以我有了语法突出显示,并且能够使用bass v14汇编程序使用Ctrl+Shift+B构建我的项目,但是现在我正试图弄清楚如何使用launch.json启动项目。我已经完成了模拟调试器项目,并对其进行了调试,但我似乎不知道如何使其适应我的扩展。首先,我使用bsnes plus模拟器作为我的调试器。实际上没有任何命令行或IPC接口允许我实现适当的调试适配器,所以我真正想做的就是运行程序并将

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

以下是我当前的问题:

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

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

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

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

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

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

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


如果没有更多细节,我不确定这里发生了什么,但拥有一个调试适配器可能是最有意义的——例如,如果你想让工具栏上的停止/重新启动按钮工作,你可能需要一个可以终止和/或重新启动进程的调试适配器。

你有没有弄明白这个问题?我不会去读vscodebug adapter API上的de文档。除了C64 VICE emulator之外,我正在尝试做与您基本相同的事情。