Java Remote Debug

如果在eclipse连接的时候报错:failed to connect to remote VM. Connection timed out. org.eclipse.jdi.TimeoutException

可以增加server side的timeout和设置eclipse里面的timeout:

increasing the Communication preferences under
Window>Preferences>Java>Debug>Communication

 

另外还有一个jdb的工具,也可以debug,没怎么用过。

 

http://it.kswchina.com/java/zd/431230.html

 

   最近协助QA测试我们基于EJB开发的系统,由于应用程序在远程环境下运行,并且在控制台和日志文件中没有输出足够的有用信息,导致调试工作很困难。这时发现了Sun的java平台调试架构(Java Platform Debugger Architecture),它能够对一个运行中的java应用程序进行全方位调试提供极大的帮助。

    JPDA是一组接口与协议。JPDA主要由三个部分构成:

    Ø Java虚拟机工具接口(JVMTI)定义虚拟机(VM)在调试时必须提供的服务,包括调试信息(如栈信息)、调试行为(如客户端设置一个断点)和通知(如到达某个断点时通知客户端);

    Ø Java调试线协议(JDWP)定义在调试过程和调试器前端之间传输的信息和请求的格式;

    Ø Java调试接口(JDI)定义了调试者可以使用的调试接口,以方便与远程的调试服务进行交互。

    当虚拟机的调试服务运行时,虚拟机作为调试的服务提供端,监听一个连接,而调试器通过该连接与虚拟机进行交互。调试器都支持两种方式的连接:共享内存(被调试者和调试器位于同一系统)和 Socket连接(被调试者和调试器可位于任何地方,包括同一系统),如果使用socket链接,则在对应的JVM中以dt_socket为名确定自变量的类型。如果被调试者和调试器位于同一机器之中,且运行的是Windows系统,则可以使用名为dt_schmem的共享内存连接。

    JVM参数设置:

    Ø -Xdebug:

    启用调试。

    Ø -Xrunjdwp:[=],[=]…… :

    加载JVM的JPDA参考实现库。

    Ø server(是“y”或否“n”):

    如“server=y”,收到一个要依附的调试应用程序;如“server=n”,依附到指定地址的调试应用程序。

    Ø address:

    连接传送地址。如果server=n,尝试依附到这个地址调试应用程序;如server=y,收到这个地址的连接。

    Ø timeout:

    如果server=y,它以毫秒为单位指定等待调试器依附的时间;如server=n,它以毫秒为单位指定依附到调试器所用的时间。

    Ø suspend:

    如“是”,JVM延缓执行,直到调试器与被调试JVM建立连接。

    将jvm参数添加至weblogic server的配置中即可开启remote debug模式,如:

 

-Xdebug -Xnoagent -Djava.compiler=none
-Xrunjdwp:server=y,transport=dt_socket,suspend=n,address=35922

    35922是server监听的调试端口,可通过:env | grep WL_REMOTE_DEBUG_PORT 找出运行环境中weblogic的调试端口。

    设置完成后,重启weblogic,将会在启动日志中看到信息:

 

Listening for transport dt_socket at address: 35922

 

Eclipse设置:

    1、首先配置一个remote launch:



    2、双击Remote Java Application



    3、填充远程主机的IP和之前设置的端口号

你可能感兴趣的:(Java,Trouble,Shooting)