Eclipse远程调试(远程服务器端监听)

前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致,也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变更。java

远程服务器端

服务器端配置eclipse调试器监听端口,有两种方式,任选其一web

第一种方式:tomcat

环境变量

export JPDA_ADDRESS=9999服务器

启动tomcat

使用sh catalina.sh jpda start启动eclipse

注意:不要用startup.shsocket

经过这条命令启动tomcat,会监听JPDA_ADDRESS设置的端口,等待调试器链接。单元测试

若是不配置JPDA_ADDRESS,默认监听8000端口测试

第二种方式:spa

配置$tomcat_home/bin/catalina.sh

加上以下一行debug

 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 监听端口。

启动tomcat

直接经过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,eclipse窗口右下角出现

这里ConnectionType咱们选择的是Standard(Socket Attach)方式调试,等待这个进度条跑完,直到consle的红色按钮变成灰色,此时已经完成了服务器端调试准备

测试调试

源码打断点

在本机eclipse源码中找到一处要调试的地方,打上断点

好比,我在一处webservice的service入口类中某一方法testAdd中加入断点

测试接口,进入断点

好比,我测试本身的WebService接口

 private static String endpoint = "http://123.125.114.144:8080/JavaUtils/services/TestService?wsdl";
     private static Call call  = null;
     @BeforeClass
     public static void init(){
         Service service = new Service();
         try {
                call  = (Call) service.createCall();
                call.setTargetEndpointAddress(endpoint);
         } catch (ServiceException e) {
              e.printStackTrace();
         }
     }

    @Test
       public void testRemoteDebug(){
            String method = "testAdd";
            // 调用远程方法
            try {
                  String value = "testValue"
                  Object ret = call.invoke(method,new Object[] {value);
                  System.out.println(ret.toString());
            } catch (AxisFault e) {
         System.err.println(e.getFaultString());
            }
       }

执行单元测试,调用服务器端WebService服务的testAdd方法,传入value值,此时eclipse进入debug状态,跳到刚才打断点的51行,这样就能够像本机同样F6,F5进行跟踪和调试远程程序了。

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

至此完整的eclipse远程调试步骤已经描述清楚。

总结

Standard(Socket Attach)方式进行服务器端监听的优缺点:

先启动远程java程序 而后 启动Eclipse远程调试,而后能够正常调试系统

缺点 :只有java程序启动后才能进行调试,没法调试java程序的启动过程,若是要全程调试须要使用另一种方式,我会总结成另外一篇文章

优势 :能够随时链接到远程java程序进行调试

PS:这种调试方式最经常使用的

本文转自:http://javacrazyer.iteye.com/blog/1757429

相关文章
相关标签/搜索