使用Powershell时出现JDWP语法错误

时间:2013-08-21 16:47:12

标签: java windows debugging powershell remote-debugging

Windows 7 x64和最新的java版本(尽管u21工作效果不佳)

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

尝试启动Java应用程序以远程调试时,出现以下错误:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n <application>
ERROR: JDWP option syntax error: -agentlib:jdwp=server=y transport=dt_socket address=4000 suspend=n

但仅当使用PowerShell时,使用cmd.exe运行完全相同的命令才能正常工作。

3 个答案:

答案 0 :(得分:2)

你可以尝试:

PS> $a = "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n <application>"
PS> Invoke-Expression $a

我认为PowerShell尝试在命令行中解释某些内容。这样PowerShell就必须执行。小心,如果您的应用程序名称中有双引号,请使用`before。

您也可以尝试此操作,以便参与通话。

$scriptBlock = {java -Xdebug                                                         <# This is comment param 1 #>`
                     -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n   <# This is comment param 1 #>`
                     `"$($args[0])`"}                                                <# Application Path #>

$ApplicationName = "c:\un chemin applicatif\toto"
Invoke-Command -ScriptBlock $scriptBlock  -ArgumentList $ApplicationName

我找到了,试试:

PS> $a = "java -Xdebug '-Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n' <application>"

我只是在''中包含-Xrunjdwp param。

答案 1 :(得分:1)

而不是:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n <application>

尝试使用:

java -agentlib:jdwp=server=y,transport=dt_socket,address=4000,suspend=n <application>

当目标VM为5.0或更高版本时使用后者,而forner适用于目标VM早于5.0的计算机

Source: Oracle Docs

答案 2 :(得分:0)

根据上述答案,我无法弄清楚它为什么不起作用。 我使用了以下工作

-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y