如何在 Windows 中启用 SBT 远程调试?

Posted

技术标签:

【中文标题】如何在 Windows 中启用 SBT 远程调试?【英文标题】:How can I enable remote debugging for SBT in windows? 【发布时间】:2014-06-13 11:38:56 【问题描述】:

我想完成与此等价的运行

sbt -jvm-debug 5005

但是我似乎无法在 Windows 中传递参数。这就是我所看到的

>sbt -jvm-debug 5005
[info] Loading project definition from [myProject]
[info] Set current project to [myProject] (in build file myProject)
[error] Expected letter
[error] Expected symbol
[error] Expected '!'
[error] Expected '+'
[error] Expected '++'
[error] Expected ';'
[error] Expected end of input.
[error] Expected 'show'
[error] Expected '*'
[error] Expected ''
[error] Expected project ID
[error] Expected configuration
[error] Expected key
[error] 5005
[error] ^
[error] Not a valid command: jvm-debug
[error] Not a valid project ID: jvm-debug
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: jvm-debug
[error] jvm-debug
[error]          ^                  

我希望能够从 Intellij 远程调试此应用程序。任何帮助都会很棒!

【问题讨论】:

sbt shell 是从哪里来的?你是怎么安装的?看来您正在使用两个不同的 sbt 启动脚本。要验证,请同时运行 sbt about 并粘贴输出。 【参考方案1】:
set SBT_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
sbt run

是 Windows 7 上唯一可行的解​​决方案。

【讨论】:

【参考方案2】:

似乎 Windows 版本的 SBT 没有定义此功能。

在 Linux 上,它在 $SBT_HOME/sbt/bin/sbt-launch-lib.bash 中定义为

addDebugger ()    
  addJava "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$1" 

您可以通过在 Windows 上设置 SBT_OPTS 环境变量来获得相同的结果。

像这样运行 SBT,让调试器监听 5005 端口

set SBT_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" && sbt

【讨论】:

行尾的“&& sbt”是什么意思?对我来说似乎不是一个有效的选择。 在 Linux 上,如果第一个命令成功,它会执行第二个命令(在本例中为 sbt)。也许实际上这在 Windows 上确实有效(我不记得了,我现在无法检查)。但是,只需跳过 && 和 eexecute set 和 sbt 作为两个单独的命令。一个接一个。 在 Windows 10 和 sbt 版本 1.3.13 上不起作用(不再?)。【参考方案3】:

目前,我下载了最后更新的 sbt,正好是 sbt 1.3.3,但是当我想在项目中启用调试时,我遇到了和你一样的问题。调查,我可以看到我自己的根目录 C:\Program Files (x86)\sbt\bin 中没有这个文件(sbt-launch-lib.bash),所以当我在另一台机器上看到时,我可以注意到 sbt ,它是 1.2.8,是的,它有我之前提到的文件,所以我卸载了 sbt 1.3.3 并安装了 sbt 1.2.8 并放入我的项目 sbt -jvm-debug 9999 并且它可以工作。

【讨论】:

以上是关于如何在 Windows 中启用 SBT 远程调试?的主要内容,如果未能解决你的问题,请参考以下文章

启用Gradle远程调试

在VS 2017专业版中为Windows启用远程模拟器

如何在sbt中启用多个监视源?

如何使用 WebView 启用 WebKit 的 Android 应用程序的远程调试/检查器?

iOS 远程调试

如何在Windows Server 2016中启用flash