idea,使用Remote 连接tomcat,远程DEBUG模式调试
前言:为什么要使用远程DEBUG模式调试?
- 解决
在我本地是好的啊
这个世界性难题~ - 测试环境碰到问题,直接连上
Debug
,不用再测试本地,再查看测试环境日志 - 遇到一些诡异的问题,日志是看不出端倪的
- 调试一些只能在测试环境执行的流程,如:调用微信 / 支付宝付款
- 一些客户的环境是有非常严格的安全限制,如外网访问 ,端口防火墙限制,这使得我们常常不能复现问题,来解决问题!
相应环境
- 服务器是:
Linux
,jdk1.8
- 服务容器是:
Tomcat
- 我们编译环境:
idea 2020.1
,jdk1.8
注意: linux
的JDK
版本与 本地环境JDK
版本一致 ,代码需要一致。
配置idea
- 点击
Edit Configurations
,编辑配置
- 选择
Remote
,进行配置
- 配置 Remote
-
Debugger mode
: 默认Attach
Attach to remote JVM
:此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;listen to remote JVM
:此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。
-
Transport
:Socket
:macOS
及Linux
系统使用此种传输方式;Shared memory
:Windows
系统使用此种传输方式;
-
Host
:你的服务器IP地址; -
port
:自己定义的端口。注意服务器Liunx
,需要开放该端口; -
Command line arguments for remote JVM
: 自动生成的命令行参数,这里我们需要将该命令 放入到Tomcat
中。-
以
Linux
系统,JDK
版本在 5—8 之间,为例:export -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
-
以windows系统为例:
set -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
-
-
usr modeule classpath: 选择你自己的项目
配置 Tomcat
linux
:这里我们只需要关心一个文件就是/tomcat/bin/catalina.sh
windows
:这里我们只需要关心一个文件就是/tomcat/bin/catalina.bat
linux , 配置 catalina.sh
#进入到 tomcat /bin 目录下
[root@localhost bin]# vim catalina.sh
#在最后结尾加上idea自动生成的命令
JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
windows 配置 catalina.bat
set -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
测试
-
配置
-
tomcat
配置看上面步骤; -
测试连接成功;
- 点击相关系统功能,成功进入断点调试;