通州北大青鸟java技术讲座之:远程调试

本篇技术文章中,通州北大青鸟Java技术教员将给大家介绍一下如何开启远程调试。如果需要开启Java虚拟机的远程调试,需要在JVM的启动参数中加入。下面为XML代码:

-Xdebug -Xrunjdwp:transport=dt_socket, address=8000,server=y,suspend=y 
各个参数意义如下:
-Xdebug:启用调试特性 
-Xrunjdwp:启用JDWP实现,它包含若干子选项: 
transport=dt_socket:表示使用套接字传输。 
address=8000:JVM在8000端口上监听请求。 
server=y:y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。 
suspend=y:y表示启动的JVM会暂停等待,直到调试器连接上。

那么我们如何在tomcat上加入远程调试(以apache-tomcat-6.0.37版本为例)?通州北大青鸟介绍:
将startup.sh中的XML代码:
exec "$PRGDIR"/"$EXECUTABLE" start "$@"  修改成:
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@" 即可。
因为在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
默认tomcat启动时不挂起,不会等待调试器连接上,这也是我们最常用的的模式。(通州北大青鸟分享)

北大青鸟网上报名
北大青鸟招生简章