首页 文章

远程调试Java应用程序

提问于
浏览
225

我有一个在linux机器上运行的java应用程序 . 我使用以下代码运行java应用程序:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

我在这台Linux机器上为TCP打开了端口4000 . 我在Windows XP机器上使用eclipse并尝试连接到此应用程序 . 我也在windows中打开了端口 .

两台机器都在局域网上,但我似乎无法将调试器连接到Java应用程序 . 我究竟做错了什么?

5 回答

  • 76

    Edit: 我注意到有些人在这里剪切和粘贴调用 . 我最初给出的答案仅与OP相关 . 这是一种更现代的调用方式(包括使用更传统的8000端口):

    java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>
    

    原始答案如下 .


    试试这个:

    java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp
    

    这里有两点:

    • runjdwp 选项中没有空格 .

    • 选项位于类名之前 . 类名后面的任何参数都是程序的参数!

  • 433

    对于JDK 1.3或更早版本:

    -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
    

    对于JDK 1.4

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

    对于较新的JDK:

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

    请根据您的需要更改端口号 .

    来自java technotes

    从5.0开始,-agentlib:jdwp选项用于加载和指定JDWP代理的选项 . 对于5.0之前的版本,使用-Xdebug和-Xrunjdwp选项(5.0实现还支持-Xdebug和-Xrunjdwp选项,但更新的-agentlib:jdwp选项更可取,因为5.0中的JDWP代理使用JVM TI接口VM而不是旧的JVMDI接口)

    还有一点需要注意,从JVM Tool interface documentation

    JVM TI是在JDK 5.0上推出的 . JVM TI取代了Java虚拟机概要分析程序接口(JVMPI)和Java虚拟机调试接口(JVMDI),从JDK 6开始,不再提供这些接口 .

  • 0

    脚步:

    • 使用上面的帖子中所述的调试选项启动远程Java应用程序 .

    • 通过指定主机和端口配置Eclipse以进行远程调试 .

    • 在Eclipse中启动远程调试并等待连接成功 .

    • 设置断点和调试 .

    • 如果你想从应用程序启动调试使用suspend = y,这将使远程应用程序暂停,直到你从eclipse连接 .

    有关详细信息,请参阅Step by Step guide on Java remote debugging .

  • 27

    这是您应该如何设置Eclipse Debugger进行远程调试:

    Eclipse Settings:

    1.单击“运行”按钮
    2.选择调试配置
    3.选择“远程Java应用程序”
    4.新配置

    • 名称:GatewayPortalProject

    • 项目:GatewayPortal-portlet

    • 连接类型:套接字连接

    • 连接属性:i)localhost ii)8787

    For JBoss:

    1.按如下方式更改vm中的 /path/toJboss/jboss-eap-6.1/bin/standalone.conf :删除#:取消注释以下行:

    JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"
    

    For Tomcat :

    catalina.bat 文件中:

    步骤1:

    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
    

    第2步:

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

    第3步:从命令提示符运行Tomcat,如下所示:

    catalina.sh jpda start
    

    然后,您需要在要调试的Java类中设置 breakpoints .

  • -9

    调试的最佳选择是创建日志和分析日志 . 但在某些情况下,我们需要调试部署在服务器上的Web应用程序 .

    Remotely debug a java web application链接 . 这里描述了完整的远程调试流程 . 希望它会有所帮助 .

相关问题