Tomcat远程Debug

简介: JVM本身提供可调试运行在虚拟机中的代码的功能。远程调试大致流程为:1. 在启动的时候设置启动参数以开启和配置调试功能2. 设置ip白名单或者关闭防火墙,让远端可以访问JVM所在机器3. IDE中配置远程调试信息4. 重启Tomcat,在IDE中启动远端调试

[TOC]

概述

JVM本身提供可调试运行在虚拟机中的代码的功能。远程调试大致流程为:

  1. 在启动的时候设置启动参数以开启和配置调试功能
  2. 设置ip白名单或者关闭防火墙,让远端可以访问JVM所在机器
  3. IDE中配置远程调试信息
  4. 重启Tomcat,在IDE中启动远端调试

Java调试架构

JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写。由3个规范组成,分别是:

  • JVMTI(JVM Tool Interface)
  • JDWP(Java Debug Wire Protocol)
  • JDI(Java Debug Interface)
  1. JVMTI定义了虚拟机应该提供的调试服务,包括调试信息(Information譬如栈信息)、调试行为(Action譬如客户端设置一个断点)和通知(Notification譬如到达某个断点时通知客户端),该接口由虚拟机实现者提供实现,并结合在虚拟机中
  2. JDWP定义调试服务和调试器之间的通信,包括定义调试信息格式和调试请求机制
  3. JDI在语言的高层次上定义了调试者可以使用的调试接口以能方便地与远程的调试服务进行交互,Java语言实现,调试器实现者可直接使用该接口访问虚拟机调试服务。 java调试工具jdb,就是sun公司提供的JDI实现。eclipse IDE,它的两个插件org.eclipse.jdt.debug.ui和org.eclipse.jdt.debug与其强大的调试功能密切相关,其中前者是eclipse调试工具界面的实现,而后者则是JDI的一个完整实现。

Tomcat设置

  • 修改catalina配置文件

/opt/apache-tomcat/bin/catalina.sh

第一行增加如下配置:


CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
  • 防火墙增加白名单

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source 
address="10.30.63.181" port protocol="tcp" port="5005" accept"
  • 重启tomcat

/opt/apache-tomcat/sbin/tomcat.service restart
  • 重启防火墙

firewall-cmd --reload
  • 检查白名单是否添加成功

firewall-cmd --zone=public --list-rich-rules

IDE设置

  • Run/Debug Configuration增加 Remote JVM Debug
    • name:随便
    • host&port:
    • commond:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
  • 点击debug
    控制台输出如下,说明配置正确
    Connected to the target VM, address: '10.30.73.52:5005', transport: 'socket'
    

问题

  • Error running '7352': Unable to open debugger port (10.30.73.52:5005): java.net.ConnectException "Connection refused: connect"

检查是否可以 ping 通,检查白名单是否添加成功。

目录
相关文章
|
7月前
|
监控 应用服务中间件
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
226 0
|
应用服务中间件
tomcat Note: further occurrences of HTTP header parsing errors will be logged at DEBUG
tomcat Note: further occurrences of HTTP header parsing errors will be logged at DEBUG
1237 0
|
XML Java 应用服务中间件
启动tomcat时,eclipse莫名奇妙自动跳转到debug模式
启动tomcat时,eclipse莫名奇妙自动跳转到debug模式
208 0
|
应用服务中间件
|
应用服务中间件
Tomcat开启Debug模式
在bin/catalina.sh中添加如下行,将tomcat重启即可。 注:以下标红的7002需将其改成对象的tomcat端口即可! JAVA_OPTS="-Xms4g -Xmx4g -XX:PermSize=512m -XX:MaxPermSize=1024m -Djava.
3578 0
|
XML Java 应用服务中间件
myeclipse下对tomcat项目进行debug断点调试
对于eclipse或myeclipse调试J2SE项目或小应用进行断点调试,大家都不陌生,只要设置断点,debug运行就OK了。但是如果是web项目,而项目是在容器中运行的,比如tomcat,resin等,有些同学就不懂怎么断点调试了,只能采取本办法,就是采用System.out.println()的打印方式了,这很不好,而且浪费很多时间。
2114 0
|
应用服务中间件 Linux Windows
Tomcat远程debug
1.服务器端windows系统 在startup.bat的最前面增加         SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000   linux 在startup.sh
1546 0
|
Java 应用服务中间件 Windows
如何让Tomcat以Debug模式启动
有时候我们需要远程调试项目代码,这就需要让Tomcat以Debug模式启动。 环境说明 Windows 7 64位 JDK 8 64位 tomcat-8.0.21 x64.
1392 0
|
应用服务中间件
配置Tomcat以Debug模式启动了,但却只能本地用localhost连接调试
配置Tomcat以Debug模式启动了,但却只能本地用localhost连接调试! 在其它电脑上使用telnet也无法连接。 这里只能使用localhost或127.0.0.1, 这是什么原因呢? 问题就出在“address=localhost:8000”,如下图: 解决方案: 将localhost改为0.
795 0