IDEA远程调试Tomcat
本文最后更新于:2021年6月15日 晚上
前言
开发新功能时,经常会遇到在本地环境运行没问题,但是部署到了 Linux 服务器上跑的时候就出现问题这种情况;还有一种情况是需要定位线上问题,这两种情况以前的做法就是加 log 日志输出,总是不能精准定位问题所在,如果能够像本地环境一样调试代码,那这个问题也就迎刃而解了。
开始之前
本文介绍 IDEA 与 Tomcat 的远程调试,且笔者在日常工作当中也是这么做的,网上很多都是互相抄袭,没有经过验证的伪原创,让人不快。
一、添加运行项
IDEA 添加远程调试项
填写服务器 IP ,端口使用默认的即可,复制第二行参数
二、修改服务器中的 Tomcat 配置
连接远程服务器,进入 Tomcat 根目录下的 bin
目录,修改 catalina.sh
文件
定位到 108 行左右,找到 cygwin=false
这一行,
在这一行的前一行添加
JAVA_OPTS=""
然后将从 IDEA 中复制的那串参数粘贴到双引号之间,保存退出。
然后启动 Tomcat,如果 Tomcat 是已经启动的话,必须要重启一下。
三、调试环境修改
为了调试方便,需要暂时关闭掉防火墙,否则可能无法连接。
1 |
|
四、IDEA 远程调试
回到 IDEA,点击 Debug 按钮,启动刚才添加的 Remote,如果以上没有配置错,那么控制台将打印出
此时就和本地调试一样打断点调试就行了
五、解决IDEA 无法连接远程 Tomcat
如果提示无法连接,如下图
则检查以上配置是否正确,确认都正确的话,可能是服务器防火墙的原因导致,需要关闭防火墙。
如果服务器是阿里云的,还需要配置 ECS 服务器的安全组,开放 5005
远程调试端口。 详见第八条
六、解决断点不生效
注意:
启动 Remote 的 Debug 之后,需要等待断点变成如下图时,再去访问接口;如果断点中间没有出现对号,说明断点还未生效,需要等待一会儿。
如果有时候死活也没法断点,就把服务器上的 Tomcat 重启一下试试!
七、其他问题
因为在 catalina.sh 中添加了远程调试的参数,导致使用 tomcat 的 bin/shutdown.sh 时,可能无法完全停止服务器。可以直接 kill 掉服务器,如果不再进行远程调试,最后把远程调试参数注释掉重启。
八、阿里云 ECS 安全组设置
进入 ECS 控制台,点击安全组
然后选择 创建安全组
然后配置该安全组的规则
点击公网入标签,再点击右上角 添加安全组规则
授权对象 填写你的 ip 地址即可。
添加完安全组之后,进入 ECS 实例
选择右侧 加入安全组,选择加入刚才添加的安全组即可。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!