zoukankan      html  css  js  c++  java
  • Java远程调试

    JDWP的全称是Java Debug Wire Protocol,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。其核心API已经包含在JDK中。

    一. 普通Java项目的远程调试(无需运行在企业级容器中的项目)

    1. 在运行Java项目的远程服务器上的运行脚本中加入以下设置参数:

    java -Xms700m -Xmx700m -Xdebug -server -Xrunjdwp:transport=dt_socket,server=y,address=9527 com.imop.webt.gameserver.GameServer

    java   -Xms700m -Xmx700m -Xdebug -server -Xrunjdwp:transport=dt_socket,server=y,address=9527 -jar com.imop.webt.gameserver.GameServer

    红色部分参数为与远程调试相关的参数

    开放9527端口

    iptables -A INPUT -p tcp --dport 9527 -j ACCEPT

    2. 在本地的eclipse中 Debug(小蜘蛛图标)>Debug Configuration...>Remote Java Application>New下创建一个远程调试的项目并设置相关参数

    并在需要debug的地方打断点。

    二. Web项目(或需要运行在企业级容器中的项目)
     
    1. 在远程服务器的运行的Web容器的启动脚本中加入以下配置(以Resin为例子),将Java项目部署到容器中,启动容器服务器。
    Resion——————————————————————————————————————————————————————
    set JAVA_HOME=C:/Program Files/Java/jdk1.6.0_16
    set RESIN_HOME=D:/resin-2.1.17
    set PATH=%JAVA_HOME%/bin;%PATH%;%RESIN_HOME%/bin

    httpd.exe -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9527

    或者在resin.conf中设置

    <jvm-arg>-Xdebug</jvm-arg>

    <jvm-arg-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9527</jvm-arg>

    红色部分为与远程调试相关的配置。

    tomcat——————————————————————————————————————————————————————

    a、Linux中配置tomcatcatalina.sh中添加如下
    CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"(不要换行,要在同一行)

    b、Window中修改 catalina,bat文件,添加:

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

    如图:


    参数说明:

    -Xdebug                              : 启用调试模式

    -Xrunjdwp<sub-options>  : 加载JVMJPDA参考实现库

    transport=dt_socket           :Socket连接,可选dt_shmem 通过共享内存的方式连接到调试服务器

    address=8000                     :调试服务器监听的端口

    server=y                             : 是否是服务器端,n为客户端

    suspend=n                         : 启动过程是否加载暂停,y为启动时暂停,方便调试启动过程

     

    2. 在本地的eclipse中添加相关远程调试设置参数(与前面的配置相同)

    如果要在本地看到输入输出(read and system.out.println)的结果显示,按F5加入控制

  • 相关阅读:
    java-date和Calendar运用
    java-date类使用练习(1)
    java-正则表达式
    JAVA-String类的应用
    java-重写equals
    java-抽象类、接口等实际应用 (酒店小案例)
    fuzz系列之libfuzzer
    ZAB协议(转)
    Paxos(转自wiki)
    Zookeeper简介和安装使用
  • 原文地址:https://www.cnblogs.com/shz365/p/7575422.html
Copyright © 2011-2022 走看看