java远程调试

一、普通java应用远程调试配置
  
    1.在运行Java项目的远程服务器上的运行脚本中加入以下设置参数:

   
    java -Xms700m -Xmx700m -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,                          
    address=9999,server=y,suspend=n  demo.jar
  

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

二、web应用远程调试配置
    Tomcat:
          在catalina.bat文件中加入下面这句SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6681    不过要注意在Linux下,有一点点差异,是要编辑catalina.sh文件。而且要改成这样:CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888"也就是把SET去掉,后面加双引号引起来,因为在Linux下,是没有SET这个语法的   


    Weblogic:
    在startWebLogic.bat加上:set JAVA_OPTIONS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

    openfire:
    启动脚本中添加:
    # Debug options
    DEBUG_OPTS="-Xdebug -Xnoagent - 
    Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"

    # Lastly, prepare the full command that we are going to run.
    OPENFIRE_RUN_CMD="${JAVACMD} -server ${DEBUG_OPTS} ${OPENFIRE_OPTS} -classpath   
    \"${LOCALCLASSPATH}\" -jar \"${OPENFIRE_LIB}/startup.jar\""


    was:
    (一):配置 WAS,打开调试服务
     进到 WAS(或ND) 的管理控制台,在服务器->应用程序服务器中,点击要启用调试服务的应用服务器,然后进入调试服务,勾选上启动(指定当服务器启动时服务器是否将尝试启动指定的服务。)。JVM 调试端口默认为 7777,注意该端口不能有冲突(如有多个应服务器要启用调试服务时,需要指定别的端口)。其他选项默认,或根据实际来设定。
   确定、保存后重启应用服务器,WAS Base 版需要回到操作系统下重启,如果是在 ND 管理控制台下,可直接在页面中重启应用服务器。

  (二):配置 Eclipse,使用远程调试
  Eclipse 的菜单 Run -> Open Debug Dialog 窗口中,右击 Remote Java Application->New,在右方的 Conect 标签页中,选择你要调试的Project(即发布到 WAS 下启用了调试服务的,在你的 Eclipse 中存在的项目),Host 填上 WAS 服务器的 IP,Port 就是前面的 JVM 调试端口。其他两个标签页 Source/Common 可留意下。

  点击 Debug 按钮,这时候 Eclipse 即处理于侦听  WAS 服务器的 JVM 调试端口的状态。

   netstat -an | grep 端口号  来检验下是不是已经打开了某某端口

    附:

    -XDebug               启用调试。
    -Xnoagent             禁用默认sun.tools.debug调试器。
    -Djava.compiler=NONE  禁止 JIT 编译器的加载。
    -Xrunjdwp             加载JDWP的JPDA参考执行实例。
    transport             用于在调试程序和 VM 使用的进程之间通讯。
    dt_socket             套接字传输。
    dt_shmem              共享内存传输,仅限于 Windows。
    server=y/n            VM 是否需要作为调试服务器执行。
    address=3999          调试服务器的端口号,客户端用来连接服务器的端口号。
    suspend=y/n           是否在调试客户端建立连接之后启动 VM 。



你可能感兴趣的:(java)