美文网首页java后端集群化专题
详解tomcat远程调试配置

详解tomcat远程调试配置

作者: 江江的大猪 | 来源:发表于2017-11-02 22:01 被阅读66次

    远程调试应用场景:

    有时候一个完整的工程没办法在本地跑起来,因为可能需要各种资源,比如rpc,redis,hive,hbase,mysql和其他关联的应用。这时候有问题可能就需要在公司的测试环境上远程调试一下代码了。
    之前一直都是直接用的公司配好的tomcat,可以直接远程调试,最近想在自己本地的tomcat上配置下远程调试的功能,google了好多资料,发现每个文章说的都有些差别,决定自己研究明白,做了这篇总结。

    以tomcat7.0.79为例:

    startup.sh:

    tomcat在bin目录中提供了该启动脚本,最后一行是:

    exec "$PRGDIR"/"$EXECUTABLE" start "$@"
    

    根据之前定义的变量,实际就是:

    catalina.sh start $@
    

    catalina.sh:

    tomcat实际的启动脚本是catalina.sh,进入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="$JPDA_OPTS $CATALINA_OPTS"
      shift
    fi
    

    如果第一个参数是jpda的话,则会在CATALINA_OPTS中额外加上这些启动参数:

    agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND
    

    这几个参数的意思不细说了,可以google。

    最终tomcat启动时的jvm参数是JAVA_OPTSCATALINA_OPTS


    总结:

    所以最简单的开启远程调试的方式就是修改startup.sh的最后一行:

    exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
    

    jpda参数都用默认值,想要修改参数就可以根据自己喜好在startup.sh中export参数,或者在catalina.sh中直接指定。

    为了统一管理tomcat的额外启动参数,我仿照公司的配置,直接在startup.sh中指定了参数(如上文所说catalina.sh中最后启动tomcat的参数是JAVA_OPTSCATALINA_OPTS):

    export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:9000"
    

    TIPS:

    address默认的是8000,这样会不安全,来自任意ip的8000端口都可以访问,所以我设置为127.0.0.1:9000,只有本机的9000端口才可以访问。如果别的机器想要远程调试,可以socat TCP4-LISTEN:9001,fork,range=xxx/32 TCP4:127.0.0.1:9000,xxx填写别的机器ip,别的机器连接9001端口,然后转发到9000。至于使用idea还是eclipse设置远程调试就可以直接百度了。

    至于-Xdebug -Xrunjdwp-agentlib这两种配置方式,主要是jdk版本问题,老版本用第一种,新版本用第二种(第一种也兼容),可以参考这篇文章

    肥肥小浣熊

    相关文章

      网友评论

        本文标题:详解tomcat远程调试配置

        本文链接:https://www.haomeiwen.com/subject/ubdopxtx.html