Eclipse远程调试

  • 2018-08-07
  • 浏览 (1292)

前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致.

也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动.

远程服务器端

服务器端配置eclipse调试器监听端口,有两种方式:

第一种方式:
/etc/profile添加环境变量:

#如果不配置JPDA_ADDRESS,默认监听8000端口
export JPDA_ADDRESS=9999

使用sh catalina.sh jpda start启动tomcat,注意:不要用startup.sh

通过这条命令启动tomcat,会监听JPDA_ADDRESS设置的端口,等待调试器连接.

第二种方式:
配置$tomcat_home/bin/catalina.sh

加上如下一行

 JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9988"

说明:server=y 是指目标应用程序作为服务监听将要连接的远程调试器(常用);

     suspend=y 是指目标VM将暂停,直到调试器应用程序进行连接(若需要调试启动错误,很有用);

     suspend=n 是指目标VM不暂停;

     address=9988 监听端口。

直接通过startup.sh启动即可

 
通过ps -aux|grep tomcat查看启动的tomcat进程,刚才配置的-Xdebug等选项出现在进程信息中,证明配置成功.

 
本机调试器配置

在本地eclipse中点击debug按钮,选择Debug Configurations

点击选项后,弹出一个窗口,双击左侧Remote Java Application

Name:自定义,任意名称

Project:本机eclipse中的WEB项目,与远端服务器上部署的WEB项目一致

Host:被调试的远端服务器ip

Port: 远端服务器中环境变量JPDA_ADDRESS的值

配置完成后点击Apply,随后点击Debug,之后的调试方式就和本机调试一样操作.


注意:服务器端配置的环境变量JPDA_ADDRESS虽然是端口,但是只是调试器监听端口,但是与tomcat中部署项目运行的端口是不一样的,web项目运行端口是在tomcat_home/conf/server.xml中进行配置的<Connector port="8080" ....>,不要混淆

0  赞