常常会遇到在应用部署在weblogic,tomcat,jetty等服务器下,而我们的代码却在本地,如何用本地的代码调试远程服务器上的程序呢
在web服务器上添加jvm参数,如以下是我们启动jetty服务器的参数,8000代表的是远程debug的端口号
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar start.jar
在本地eclipse中点击
debug->Debug Configuration...->Remote Java Application(新建)
分别选择本地的代码,host填写的时远程服务器的地址,port是刚才在服务器端设置的8000,在eclipse代码中打上一个端点就可以运行了
---------------------------------------- 以下附上idea远程debug方式 -------------------------------------------------------------
首先修改tomcat bin文件下 catalina.bat批处理文件(linux系统下修改.sh文件)
找到设置JAVA_OPTS变量处新增
1
|
set
JAVA_OPTS=%JAVA_OPTS% -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n
|
linux下
1
|
JAVA_OPTS=
"$JAVA_OPTS -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n"
|
此段意思为启动 JPDA调试。
默认情况下,JVM是没有启动此配置,需要手动添加命令添加启动参数:
该参数意思为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-Xdebug
启用调试特性
-Xrunjdwp
启用JDWP实现,它包含若干子选项:
transport=dt_socket
JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。
address=9999
JVM在9999端口上监听请求。
server=y
y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
suspend=y
y表示启动的JVM会暂停等待,直到调试器连接上。
suspend=y这个选项很重要。如果你想从Tomcat启动的一开始就进行调试,那么就必须设置suspend=y。
|
IDEA 新增一个Remote Tomcat
host为远程部署应用地址
port为访问端口(应用访问端口)
debug处port为 Tomcat配置文件中 配置的监听端口..
配置成功后通过startup.bat文件或者catalina.bat启动需要调试应用
同时在IDEA 中启动新增的远程tomcat
启动成功后出现如下提示
1
2
|
Connected to server
Connected to the target VM, address:
'192.168.1.179:9999'
, transport:
'socket'
|
代表连接成功,此时就能够进行远程调试了
Eclipse配置远程调试可参考下面链接中配置,作者介绍很详细