两种远程调试方法

时间:2015-05-26 08:54:34

标签: java linux eclipse tomcat7 remote-debugging

我有一个ubuntu服务器,我的应用程序在tomcat7中运行。现在我有两种远程调试方法,作为一个学习者,我想知道两者之间的技术差异是什么,或者它们是否相同,我错过了什么?

方法1 :打开文件 / etc / default / tomcat7

  

#启用远程调试取消注释以下行。

     

#然后,您就可以在端口8000上使用java调试器了   #JAVA_OPTS =“$ {JAVA_OPTS} -Xdebug   Xrunjdwp:运输= dt_socket,地址= 8000,服务器= Y,暂停= n“的

方法2

  

导出CATALINA_HOME = / usr / share / tomcat7 export   CATALINA_BASE = / var / lib / tomcat7 / export JPDA_ADDRESS = 8090导出   JRE_HOME = / usr / lib中/ JVM / java的1.7.0-的openjdk-AMD64

     

现在去tomcat主目录/ usr / share / tomcat7 / bin并编写   以下行在调试模式下运行tomcat。

     

#。/ catalina.sh jpda start

我遇到的方法2的另一个问题是,当我启动jpda并且我的tomcat服务也在端口80上运行时,我得到连接拒绝,当我停止tomcat时我能够远程连接到8090。那是什么意思?

1 个答案:

答案 0 :(得分:1)

从技术上讲,它们是相同的,指的是catalina.sh:

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
  shift
fi

关于第二个问题,当通过shutdown.sh停止tomcat时,jpda端口仍在监听,您可以使用linux命令netstatlsof进行检查。我遇到了同样的问题,并且不确定为什么tomcat不处理它。

端口80上的连接拒绝错误可能与jpda选项无关。 jdwp是一个JVM标志,不仅是tomcat,还有其他任何java应用程序都可以使用它。