远程调试 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 远程调试

在Jetty下使用Idea远程调试项目时,提示为:timeout during handshake

使用 IntelliJ 12 部署和调试远程 Jetty

VS2012调试器错误 - “连接请求被拒绝..确保...调试器正在'无验证'模式下运行。”

远程调试不会因错误而中断

如何使用VS2010远程调试?