diff --git a/integration-test/src/test/scala/RunnerTest.scala b/integration-test/src/test/scala/RunnerTest.scala index b907828ec..29a0be9bb 100755 --- a/integration-test/src/test/scala/RunnerTest.scala +++ b/integration-test/src/test/scala/RunnerTest.scala @@ -190,4 +190,10 @@ object SbtRunnerTest extends SimpleTestSuite with PowerAssertions { assert(out.contains[String]("[info] HelloTest")) () } + + test("sbt --jvm-debug ") { + val out = sbtProcess("--jvm-debug", "12345", "compile", "-v").!!.linesIterator.toList + assert(out.contains[String]("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=12345")) + () + } } diff --git a/src/universal/bin/sbt.bat b/src/universal/bin/sbt.bat index 105c9e7b2..f063cac4b 100755 --- a/src/universal/bin/sbt.bat +++ b/src/universal/bin/sbt.bat @@ -375,6 +375,9 @@ if defined _jvm_debug_arg ( rem next argument wasn't a port, set a default and process next arg set /A JVM_DEBUG_PORT=5005 goto args_loop + ) else ( + shift + goto args_loop ) ) ) @@ -637,6 +640,18 @@ if not "%p:~0,5%" == "-XX:+" if not "%p:~0,5%" == "-XX:-" if "%p:~0,3%" == "-XX" ) ) +if "%p:~0,14%" == "-agentlib:jdwp" ( + rem special handling for --jvm-debug since '=' and ',' gets parsed away + for /F "tokens=1 delims==" %%a in ("%p%") do ( + rem make sure it doesn't have the '=' already + if "%p%" == "%%a" if not "%~1" == "" if not "%~2" == "" if not "%~3" == "" if not "%~4" == "" if not "%~5" == "" if not "%~6" == "" if not "%~7" == "" if not "%~8" == "" ( + echo %0=%1=%2,%3=%4,%5=%6,%7=%8 + shift & shift & shift & shift & shift & shift & shift & shift + goto echolist + ) + ) +) + echo %0 goto echolist