我正在尝试编写VSCode扩展以支持基本的SNES应用程序开发。我已经有了基本的语法定义和构建任务,所以我有语法高亮,并且能够使用低音v14汇编程序使用Ctrl + Shift + B构建我的项目,但现在我想弄清楚如何启动项目使用launch.json。我已经完成了official docs并使用了模拟调试器项目,但我似乎无法弄清楚如何使其适应我的扩展。首先,我使用bsnes-plus模拟器作为我的调试器。实际上没有任何命令行或IPC接口可以实现正确的调试适配器,所以我真正想做的就是运行程序并将其输出文件传递给它。暂时,我假设bsnes-plus.exe位于我的$ PATH中,但最终我会尝试找出扩展的外部可执行依赖项的最佳实践。
以下是我目前的问题:
答案 0 :(得分:0)
launch.json的“程序”字段是我已编译的应用程序,还是bsnes-plus.exe?
这完全取决于调试扩展。它只是传递给调试适配器。它通常对应于正在调试的特定应用程序/脚本,而不是运行它的运行时环境,因此我建议它应该是您编译的应用程序。
如果“程序”是我的应用程序,则在哪里指定bsnes-plus.exe?反之亦然。
您可以将其放在任何其他字段中。在Dart中,我们有一个await sessionClient.detectIntent(request);
字段,可以将其传递给调试适配器。不过,它通常是由dartPath
静默填充的(我们通过搜索DebugConfigurationProvider.resolveDebugConfig
来检测SDK),因此用户无需添加它。
有没有一种方法可以指定我自己的项目级变量,例如$ OUTPUT,这样我就不必将输出文件名硬编码到构建任务和启动任务中?
您无法创建自己的变量,但是使用PATH
可以在将启动配置传递给调试适配器之前自行操作启动配置,这可能使您可以执行此处需要的操作(例如,您可以执行在resolveDebugConfig
上进行字符串替换-或者甚至可以在未设置的情况下添加它,从而也可以进行launch.less-less的启动。)
我是否需要编写调试适配器,即使它除了启动应用程序之外并没有做任何其他事情,只是为了告诉VSCode它干净退出了?
我不确定在没有更多细节的情况下发生了什么,但是拥有调试适配器可能最有意义-例如,如果要使工具栏上的“停止/重新启动”按钮起作用,则可能需要调试可以终止和/或重新启动进程的适配器。