Scala 1). 如果您在IntelliJ之外运行SBT(在命令行),则需要使用步骤1中相同的VM参数启动SBT(我没有这样做;因此没有说明)。在这一步之后,SBT现在正在运行(但您的代码还没有运行),JVM被设置为进行远程调试 这将启动IntelliJ调试工具,该工具连接到您在步骤3中启动的JVM 最后,在SBT控制台中开始编译。可以使用任何编译命令(包括连续编译命令)执行此操作。如果连续重新编译,则会发生重新编译,但不会在调试器暂停代码执行时发生
我也一直在努力在Windows上调试Spray-can/Akka/Scala应用程序,该应用程序是通过SBT构建的,使用Intellij。将各种建议拼凑在一起,对我来说最简单的方法是:Scala 1). 如果您在IntelliJ之外运行SBT(在命令行),则需要使用步骤1中相同的VM参数启动SBT(我没有这样做;因此没有说明)。在这一步之后,SBT现在正在运行(但您的代码还没有运行),JVM被设置为进行远程调试 这将启动IntelliJ调试工具,该工具连接到您在步骤3中启动的JVM 最后,在SBT控制台中开始编译。可以使用任何编译命令(包括连续编译命令)执行此操作。如果连续重新编译,则会发生重新编译,但不会在调试器暂停代码执行时发生,scala,intellij-idea,jetty,sbt,Scala,Intellij Idea,Jetty,Sbt,我也一直在努力在Windows上调试Spray-can/Akka/Scala应用程序,该应用程序是通过SBT构建的,使用Intellij。将各种建议拼凑在一起,对我来说最简单的方法是: 确保您的项目/plugsin.sbt文件中有sbt.Revolver,例如 添加SBTPlugin(“io.喷雾“%”sbt转轮“%”0.7.1) 在build.sbt文件中设置javaoptions: javaOptions:=Seq(“-Xdebug”,“-Xrunjdwp:transport=dt_sock
要了解Windows folk的价值,请编辑
%SBT\u HOME%\bin\SBT.bat
并找到以下代码行:
:run
"%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %*
if ERRORLEVEL 1 goto error
goto end
然后将其替换为以下代码:
FOR %%a IN (%*) DO (
if "%%a" == "-jvm-debug" (
set JVM_DEBUG=true
set /a JVM_DEBUG_PORT=5005 2>nul >nul
) else if "!JVM_DEBUG!" == "true" (
set /a JVM_DEBUG_PORT=%%a 2>nul >nul
if not "%%a" == "!JVM_DEBUG_PORT!" (
set SBT_ARGS=!SBT_ARGS! %%a
)
) else (
set SBT_ARGS=!SBT_ARGS! %%a
)
)
if defined JVM_DEBUG_PORT (
set _JAVA_OPTS=!_JAVA_OPTS! -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=!JVM_DEBUG_PORT!
)
call :run %SBT_ARGS%
if ERRORLEVEL 1 goto error
goto end
:run
"%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %*
goto :eof
在Bash脚本启动器中看到的-jvm debug
时,我能做的最好的事情就是获得相同的行为
注意。我不认为
%SBT\u HOME%
实际上存在于这个脚本之外,除非您在您的环境中显式创建,但无论如何,您得到了要点:D文件->设置->其他设置->SBT
虚拟机参数
-Xmx512M-XX:MaxPermSize=256M-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
运行->编辑配置
按+键,然后选择remote
按申请
现在,在SBT控制台(由intelliJ内部启动)中,当您执行命令“run”时,您将看到“侦听地址为5005的传输dt_套接字”
现在按Run->Debug。您将看到下面激活的调试菜单。它有两个选项卡调试器和控制台
使用F7从下一行到下一行
我选择了n。当我运行run命令时,它是y,它被卡住了这一个每次对我都有效,你只需要在IntelliJ中设置远程调试;我使用IntelliJ中终端的JVM参数启动SBT:
sbt -J-Xdebug -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
之后,我可以在本地主机上开始远程调试:5005我也遇到了同样的问题,我想分享一下我是如何解决的。顺便说一下,我正在使用Ubuntu 14.04和IntelliJ 15
I. Give some name example: DebugMyModule
II. All needed configurations will be set automatically, But you just verify. In Command line arguments should look like this "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005".
III. In 'Search Sources in Module's Classpath' text box specify your module in which module your test cases are there.
IV. put 127.0.0.1 host instead of 'localhost'. 'localhost' not working for me.
编辑配置
列表框中选择DebugMyModule,然后单击Debug
注意:您应该看到调试视图打开,并且在调试控制台中您应该能够看到“连接到目标VM,地址:'127.0.0.1:5005'
,传输:'socket'”sbt-jvmdebug 5005
”的终端,并按如下方式运行
project <your-module-name>
it:testOnly package.TestSpec
项目
it:testOnly package.TestSpec
例如:com.myproject.module.AddServiceTest[Spec]按照上面Roberto Tyley的回答,尝试此操作,但在Windows中,我们还需要在安装sbt后设置以下环境变量: SBT_主页
C:\ProgramFiles(x86)\sbt\
[或安装sbt的任何地方] SBT_选择
-Xdebug-runjdwp:transport=dt_socket,server=y,suspend=n,address=5005 [根据RT的IntelliJ示例] 添加到路径:%SBT\u HOME%\bin;%SBT_选择% 然后在项目文件夹的命令行中运行以下命令 “sbt运行-jvm-调试5005” 如果工作正常,命令行将首先输出一行re “正在侦听地址为5005的传输dt_插座” 在IntelliJ中设置断点 在浏览器中打开网站以触发调试器断点,例如“”。IntelliJ插件可能更快地连接调试器,而无需修改端口号: AttachMe将自动附加IntelliJ调试器,即使您 从终端(或任何其他方式)启动应用程序。你不需要 手动触发
附加到流程操作
还有安装说明,但是我不得不稍微修改一下,让它在我的机器上工作
从官方回购协议下载脚本
curl -o installer.shhttps://raw.githubusercontent.com/JetBrains/attachme/master/installer.sh
给它可执行权限chmod u+x installer.sh
用project <your-module-name>
it:testOnly package.TestSpec
export SBT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5009
curl -o installer.shhttps://raw.githubusercontent.com/JetBrains/attachme/master/installer.sh
AM_JDWP_ARGS="transport=dt_socket,server=y,suspend=y,address=127.0.0.1:0"
echo Using JDWP arguments ${AM_JDWP_ARGS}
export JAVA_TOOL_OPTIONS="- javaagent:/Users/mario_galic/.config/attachme/agent.jar -agentlib:jdwp=${AM_JDWP_ARGS}"
echo "AttachMe configured successfully"