远程调试Jetty(无需mvn,无需插件)

32

过去的场景:
- 使用 Tomcat 并在调试模式下启动,并使用 Eclipse 进行远程调试
- 定义一个端口并在这个调试/远程端口上连接 Eclipse。
- 用于调试其他主机/服务器上的服务器。

现在的场景:
现在,我正在使用 Jetty,并尝试做同样的事情,但没有成功,有人能帮我吗?
我没有使用 Maven,并且不想从我的 Eclipse 中启动 Jetty。

环境:
Windows XP
Java V. 5
Jetty V. 6.1.15

链接:
http://docs.codehaus.org/display/JETTY/Debugging
这没能帮到我!
http://docs.codehaus.org/display/JETTY/Debugging+Jetty+with+Eclipse
http://neelzone.wordpress.com/2007/06/18/jetty-and-eclipse-integration
这些是在 Eclipse 中启动 Jetty 的方法。

4个回答

38

这是我们在开发过程中添加到JBoss命令行的内容:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

然后我们启动Eclipse远程调试并连接到该端口。


更新:

要从jar文件(独立运行)运行,请执行以下操作

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8585,server=y,suspend=n -jar start.jar 

2
只是一个小问题:该语法适用于1.5之前的JVM,更新的版本使用-agentlib:jdwp选项。 - andri
2
嗨,David,谢谢你的回答,对我很有用。我正在使用以下命令启动我的Jetty: java -Xdebug -Xrunjdwp:transport=dt_socket,address=8585,server=y,suspend=n -jar start.jar谢谢! - rafa.ferreira

18

远程调试应该使用JPDA。这里有一篇类似教程的文章,可以在这里找到。

简而言之,使用以下参数启动JVM:

-agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n

然后,您就可以通过标准的Eclipse调试器连接到监听端口8000的底层JVM了。


3
如果您正在调试服务器启动操作,请记得设置suspend=y。 - Rich Seller

15

如果你有一天需要使用mvn jetty:run,那么你必须

export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"

追加-Xdebug...没有起作用


0

在“start.jar”之前使用JVM“agentlib”命令行参数对我没有用,但是这个方法可以:

如何允许Eclipse在端口8000上远程调试#Jetty(#JPDA #agentlib:jdwp)

您必须创建一个文件$JETTY_BASE/start.ini(不要更改$JETTY_HOME/start.ini),并将以下两行放入其中:

  • --exec
  • -agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n

完全相同的问题。必须将行附加到start.ini文件中。有人知道为什么吗? - Summer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接