网上远程debug的文章很多,但是都说的很笼统,细节缺失,一些关键存疑步骤未阐明,本人把坑都踩了,这里详细说下。
配置环境参考我前几日的文章,这里不再赘述。链接:linux虚拟机tomcat部署javaweb项目
环境配好了按网上的教程,改一下服务器上tomcat的catalina.sh文件:
# 2014.6.14 jack set start
CATALINA_HOME=/alidata/server/tomcat7
JAVA_HOME=/usr/java/java7
JAVA_OPTS="-Xms512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=2424,server=y,suspend=n"
# jack set end
# OS specific support. $var _must_ be set to either true or false.
其中,# OS specific support. $var _must_ be set to either true or false.这行是定位,catalina.sh里有这行注释,自己的内容加在上面即可。
只需要 CATALINA_OPTS 即可,这个是配置远程debug监听的,上面的JAVA_OPTS不用写,与此无关,如果看不懂这行含义的建议去百度,基础知识夯实。
其中address需要注意,是debug的端口号,我没太明白这个端口号含义,以为是tomcat项目访问的端口号,我的是默认的8080没改动,所以这里address也写了8080,
但是导致http访问请求被拒绝,不太理解,可能是debug单独需要的端口号吧。具体含义再研究下。
因此,这里的address要填个未占用的端口号,比如8089之类的。
到此为止,服务端配完了,重启tomcat即可。
然后是启动客户端的debug,网上有教程,进入eclipse的项目,debug as --> debug Configrations --> remote java application:
然后客户端可以发送请求了,端口当然是tomcat项目访问的端口:
这时就能停到客户端eclipse的断点上,请求参数也能接到,说明配置没问题。
需要注意下:
debug状态下面的控制台没有任何提示,需要去debug那里查看该进程状态,红点是停掉debug,避免重复开启自己又不知道。
另外,如果启动debug时提示连接拒绝,要么是服务端tomcat没启动,要么是客户端remote这里参数写错了,注意下。
注意一点,此种远程debug和本地debug的操作不同,本地debug直接eclipse-debug就连带tomcat一并启动了,但远程debug需要先启动服务端的服务,再启动eclipse的debug。
其他一些细节网上的文章都写过了,拿来一并参考下即可。