两种远程调试方式
Two remote debugging methods
我有一个 ubuntu 服务器,我的应用在 tomcat7 中 运行。现在我有两种远程调试的方法,作为一个学习者我想知道这两者之间的技术区别是什么,或者它们是否相同而我遗漏了什么?
方法一:打开文件/etc/default/tomcat7
#To enable remote debugging uncomment the following line.
#You will then be able to use a java debugger on port 8000.
#JAVA_OPTS="${JAVA_OPTS} -Xdebug
Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
方法二:
export CATALINA_HOME=/usr/share/tomcat7 export
CATALINA_BASE=/var/lib/tomcat7/ export JPDA_ADDRESS=8090 export
JRE_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
now go to tomcat home folder /usr/share/tomcat7/bin and write the
following line to run tomcat in debug mode.
#./catalina.sh jpda start
我遇到的关于方法 2 的另一件事是,当我启动 jpda 并且我的 tomcat 服务也在端口 80 上 运行 时,我得到 连接被拒绝 当我停止时 tomcat 我能够远程连接到 8090。为什么会这样?
从技术上讲,它们是相同的,指的是catalina.sh:
if [ "" = "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 命令 netstat
或 lsof
。我遇到了同样的问题,但不确定为什么 tomcat 没有处理它。
80端口连接被拒绝的错误可能与jpda选项无关。 jdwp
是一个 JVM 标志,不仅 tomcat 任何其他 java 应用程序都可以使用它。
我有一个 ubuntu 服务器,我的应用在 tomcat7 中 运行。现在我有两种远程调试的方法,作为一个学习者我想知道这两者之间的技术区别是什么,或者它们是否相同而我遗漏了什么?
方法一:打开文件/etc/default/tomcat7
#To enable remote debugging uncomment the following line.
#You will then be able to use a java debugger on port 8000.
#JAVA_OPTS="${JAVA_OPTS} -Xdebug Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
方法二:
export CATALINA_HOME=/usr/share/tomcat7 export CATALINA_BASE=/var/lib/tomcat7/ export JPDA_ADDRESS=8090 export JRE_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
now go to tomcat home folder /usr/share/tomcat7/bin and write the following line to run tomcat in debug mode.
#./catalina.sh jpda start
我遇到的关于方法 2 的另一件事是,当我启动 jpda 并且我的 tomcat 服务也在端口 80 上 运行 时,我得到 连接被拒绝 当我停止时 tomcat 我能够远程连接到 8090。为什么会这样?
从技术上讲,它们是相同的,指的是catalina.sh:
if [ "" = "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 命令 netstat
或 lsof
。我遇到了同样的问题,但不确定为什么 tomcat 没有处理它。
80端口连接被拒绝的错误可能与jpda选项无关。 jdwp
是一个 JVM 标志,不仅 tomcat 任何其他 java 应用程序都可以使用它。