远程调试

 

作为一名苦逼的程序员,肯定遇见过程序在本地跑的非常好,但是一放到远程的服务器上就各种问题的情况,这个时候只有远程调试。远程调试就是通过远程服务器上的socket端口告诉本地的程序源码,执行了什么操作,然后对应的在本地显示出运行的信息。那么既然通过socket,那肯定需要socket连接,所以现在服务器启动应用服务器的端口监听,下面以tomcat为例。本文介绍两种防范,当然个人推荐第二种,至于原因我不说大家都明白。

方法一:

 

linux:SET CATALINA_OPTS="-server -Xdebug -Xnoagent  -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"

 然后就可以启动服务器了,./startup.sh就可以了。

本地的ide中中需要通过在debug中设置连接的socket就可以了,端口当然是8000.

为了形象的说明附图三张,头两种是eclipse的,后一张是idea的。



 



 

 

 

方法二:

tomcat服务器已经内置了JPDA支持,只要用:

catalina.sh jpda start

这条命令启动tomcat,它就会监听8000端口,等待调试器的连接。要注意不能使用 startup.sh脚本。tomcat会使用 JPDA_ADDRESS这个环境变量的值。比如想监听8017端口:

export  JPDA_ADDRESS=8017 
catalina.sh jpda start

接着,选一个自己喜欢的调试器,基本上现在主流的如Eclipse,idea,NetBean都可以。我主要使用Eclipse,操作只要三步:

1.选择“Run”菜单里的“Open Debug Dialog”。

2.在对话框里找到“Remote Java Application”。 右键菜单选择“New”创建一个配置。

3.新创建的配置的Project选择服务器上的工程。Host和Port分别填写你服务器的IP和JPDA的端口,默认是8000,或 者$JPDA_ADDRESS。

现在就可以像本机调试一样, 设置断点和跟踪调试了。