idea + tomcat + linux 远程debug

1. 环境描述:

①Tomcat Version:Apache Tomcat/7.0.77

②JVM Version:1.8.0_191-b12

③OS Name:Linux

④OS Version:2.6.32-431.el6.x86_64

⑤:idea Version:ULTIMATE 2018.2

2. 原因:测试环境有问题,打log也没有找到问题,就想着远程debug一下,网上idea远程debug tomcat的文章很多,但是可能我idea版本太新了,导致看了好多篇文章都不能debug,然后拼拼凑凑几篇文章才debug上,记录一下给大家参考一下,有问题可以指出。

3. tomcat 中的配置

catalina.sh修改

①找到“JPDA_ADDRESS”,可把默认的“8000”修改为没有被占用的端口号,比如我的修改为“9999”

if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="9999"
  fi

②找到“Execute The Requested Command”这行注释,在下面加上如下配置

CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=10.128.134.106
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999
"

idea + tomcat + linux 远程debug 

“10.128.134.106”为远程服务器的地址,“1099”设置为JMX port的端口号,“9999” 为远程调试的端口,跟#①的“JPDA_ADDRESS”是一样的。

ssl,false表示不使用ssl链接

authenticate,false表示不使用监控,即不需要用户名和密码。参考文章

注意的点:

         以上端口可以随意改动,但是必要的是后续的设置必须保持一致,并且务必保证端口没有被占用,这些设置的端口在防火墙中是开放状态;

     “-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999”这个设置有的地方是这样“-agentlib:jdwp=transport=dt_socket,address=15833,suspend=n,server=y”,我配置了没有生效,看有一篇文章是Xdebug,所以改成了Xdebug

     重启一下tomcat

4. 配置idea

①新建远程tomcat

idea + tomcat + linux 远程debug

idea + tomcat + linux 远程debug 

idea + tomcat + linux 远程debug 

     

idea + tomcat + linux 远程debug idea + tomcat + linux 远程debug

参考文章:

https://www.cnblogs.com/qiumingcheng/p/6659019.html

https://www.cnblogs.com/jecyhw/p/4359328.html

https://www.cnblogs.com/qnight/p/8983145.html