IDEA远程调试Tomcat

IDEA远程调试Tomcat

之前基本上都是打log来找BUG的,看看log基本上也就知道什么问题了。但是把有些问题还是调试来的方便,于是开始研究怎么远程调试Tomcat。。。。表示各种教程太杂太乱,基本上不懂原理。弄了半天,终于能够调试了。。记录下。

一、tomcat的jpda服务

什么是JPDA呢
JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)。而像Eclipse和IDEA这种开发工具提供的图形界面的调试工具,其实就是实现了JDI。关于JPDA的详细信息,可以查看developerWorks上的系列文章—-深入Java调试体系
- - - - - - - - - - - - -来自http://blog.csdn.net/mhmyqn/article/details/49209541

tomcat中启动jpda服务

./catalina.sh jpda start

在catalina.sh脚本中,可看到jpda的默认配置是这样的

    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

默认的端口是8000,当然也可以改成自己喜欢的端口。好吧,其实这些脚本我根本看不懂,但是对shell script一直有着神圣的敬意,于是我觉这个周末学学这个神奇的东西。。跑题了

二、IDEA如何操作

1、添加remote tomcat server
2、填写主机信息,IP:PORT(注意这里的port不是jpda调试的端口,而是tomcat访问端口)
IDEA远程调试Tomcat_第1张图片
3、进入startup/connection—>Debug  看到下面图的信息,把下面的端口改为jpda调试端口8000
IDEA远程调试Tomcat_第2张图片
sel_res

OK,通过 ./catalina.sh jpda start命令重新启动tomcat后就可以在idea中调试了。。(注意代码版本要和tomcat中部署的一致。。tomcat关闭命令 catalina.sh stop)

本人使用的IDEA版本 15.2
tomcat版本apache-tomcat-8.0.32
系统:osx 10.11.2(系统不同会稍微不同。。请自行探讨) 

**分割线2016-3-15*****

问题记录

在使用过程过还是遇到了一些问题,主要还是端口的问题。当一台机器上得一个端口已经与远程tomcat宿主机开始建立通讯的时候(tcp ESTABLISHED)的时候,会无法再次建立连接。
但问题是可能已经建立的连接你也不知道是如何出现了,这个时候需要查看远程主机的端口使用情况,查看是否已经建立连接。想办法把这个连接关闭(重启IDE或者杀进程等等),再去建立自己的想要的连接来调试。

你可能感兴趣的:(java,tomcat,调试)