远程调试 Jetty(无 mvn,无插件)
Posted
技术标签:
【中文标题】远程调试 Jetty(无 mvn,无插件)【英文标题】:Remote debug Jetty (no mvn, no plugins) 【发布时间】:2010-11-08 11:48:25 【问题描述】:过去的情景 - 使用 Tomcat 并在 调试模式 和 远程调试 下使用 Eclipse。 - 在此调试/远程端口中定义一个端口并与 eclipse 连接。 - 用于调试其他主机/服务器中的服务器
今天的情景 现在,我正在使用 Jetty 并且我也尝试这样做,但没有成功,有人可以帮我吗? 我没有使用 Maven,也不想从我的 Eclipse 中启动 Jetty。
环境: 视窗XP Java V. 5 码头 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
中启动的【问题讨论】:
【参考方案1】:这是我们在开发时添加到 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
【讨论】:
只是一个小问题:该语法适用于 1.5 之前的 JVM,较新的 JVM 使用 -agentlib:jdwp 选项。 嘿大卫,谢谢你的回答,对我有用。我正在使用休闲命令来启动我的 Jetty:java -Xdebug -Xrunjdwp:transport=dt_socket,address=8585,server=y,suspend=n -jar start.jar 谢谢!【参考方案2】:对于远程调试,您应该使用JPDA。有一篇关于它的教程文章here。
简而言之,用参数启动你的 JVM:
-agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n
您可以通过标准 Eclipse 调试器连接到在端口 8000 上侦听的底层 JVM。
【讨论】:
如果你在调试服务器启动操作记得设置suspend=y【参考方案3】:如果你有一天会使用 mvn jetty:run,你必须
export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"
附加 -Xdebug ...
不起作用
【讨论】:
【参考方案4】:在“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。有人知道为什么吗?以上是关于远程调试 Jetty(无 mvn,无插件)的主要内容,如果未能解决你的问题,请参考以下文章
在Jetty下使用Idea远程调试项目时,提示为:timeout during handshake