#最近老是遇到一些古怪的问题,一些很基础的功能总出问题,在本地环境测试通过,在生产环境上验证也没有问题,但是在预发布环境就一直有问题,百思不得姐,一直怀疑预发布环境有什么问题,于是就有了下面的内容#
其实这样操作是不对的,尤其不要轻易在生产环境上尝试,出了问题概不负责。
但这样做的好处在于能在本地代码中调试其他机器中发生的问题,而且这些问题不太好重现的时候,这样做就能够迅速定位问题所在。
1.首先在远程机器上的tomcat支持远程调试功能,需要在catalina.sh中第一行的位置增加以下代码:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
2.启动tomcat,如下命令:
./catalina.sh jpda start
tomcat下bin目录中执行
观察打印日志可见:
Aug 07, 2017 5:28:06 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/xxx_tomcat/webapps/docs
Aug 07, 2017 5:28:06 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/xxx_tomcat/webapps/docs has finished in 24 ms
Aug 07, 2017 5:28:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-80"]
Aug 07, 2017 5:28:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Aug 07, 2017 5:28:06 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 12617 ms
Listening for transport dt_socket at address: 8000
3.紧接着在本地的eclipse中配置如下图所示:
首先在debug功能下配置Debug Configurations 如下图所示
进入到配置界面:
选择Remote Java Application ,双击或者邮件选择new:
name:这个名字可以随便取,你高兴就好;
project:这个是本地的源代码项目,不要选错;
host:远程机器的IP地址;
port:是配置的端口;
将Allow termination of remote VM 勾选;
红色部分是必填的内容,其他默认即可。
运行debug即可。
最后容易出现的问题连接不上服务器,检查下本地和目标机器的防火墙,关闭之后再次尝试,还有问题请自行研究。