`
winebibber
  • 浏览: 119485 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

利用JPDA进行Remote Debug

    博客分类:
  • Java
阅读更多

    最近协助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:<name1>[=<value1>],<name2>[=<value2>]...

加载JVMJPDA参考实现库。

Ø         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和之前设置的端口号

 

这时就可以在指定的project的代码中设置断点了,接下来激活你的debug操作,当程序运行至断点处时将会停止下来进入debug。

 

推荐一篇深入讲解JPDA的文章:《深入Java调试体系》,它将会使你对JPDA有更深入的认识。

 

7
2
分享到:
评论

相关推荐

    远程调试jpda.docx

    此时,利用Java Platform Debugger Architecture(JPDA)可以实现这一目标。JPDA是Java平台调试架构,它由Java虚拟机后端和调试平台前端两部分构成,使得调试平台可以通过调试交互协议向Java虚拟机请求服务,从而对...

    jvm tomcat eclipse 远程 断点 debug 调试 jpda

    在Eclipse中,打开Debug配置界面,选择"Remote Java Application"模板,填入远程服务器的信息(主机名、端口号),然后启动调试。当远程应用执行到断点处时,Eclipse会暂停并显示当前上下文,使得开发者可以查看...

    tomcat远程debug测试

    【Tomcat远程Debug测试】是针对Java应用服务器Tomcat的一种调试方法,允许开发者在本地Eclipse环境中对运行在远程服务器上的Tomcat应用进行调试。以下是详细的步骤和知识点: 1. **配置Tomcat**: - **Windows系统...

    java查看sun包源码-remote-debug-example:Java远程debug示范例子

    进行相关逻辑的诊断也是可以的。但是今天我们讲的是远程debug,意思就是直接调试linux 服务器上面的代码,在IDEA中添加一个remote 然后填写远程服务器的开启JPDA(Java Platform Debugger Architecture)的端口号,只...

    tomcat远程debug与jrebel热部署文件

    至于`remote-debug.bat`,这是一个用于远程调试的批处理文件,它通常会调用已经配置好远程调试参数的`catalina.sh`或`catalina.bat`,并启动调试客户端,连接到之前设置的调试端口(如8000)。 总结来说,通过配置...

    mac debug tomcat

    ### Mac环境下进行Tomcat远程调试的知识点 在Mac操作系统中进行Tomcat远程调试是一项非常实用且重要的技能,尤其是在开发过程中需要对运行中的应用进行详细分析时。本文将详细介绍如何在Mac环境中配置并实现Tomcat...

    常用中间件开启远程调试方法汇总

    在Eclipse中,选择“Run” -&gt; “Debug Configurations…”,然后在“Remote Java Application”部分新建一个配置,填写服务器IP和刚才设置的调试端口,点击Debug按钮,就可以如同调试本地代码一样进行远程调试了。...

    springboot远程调试(eclipse篇)

    4. **-Xrunjdwp**:加载 JDWP (Java Debug Wire Protocol) 的 JPDA (Java Platform Debugger Architecture) 实现,它是 Java 官方提供的调试协议。 - **transport=dt_socket**:指定使用套接字传输方式进行通信。 ...

    Eclipse 远程调试Tomcat的应用

    当我们的应用部署在远程服务器上的Tomcat容器中时,如何利用Eclipse进行远程调试就显得尤为重要了。本文将深入探讨如何配置Eclipse以远程调试部署在Tomcat上的应用,通过详细步骤和参数解析,帮助开发者有效定位和...

    在Tomcat和Eclipse进行远程调试的配置.doc

    1. 在Eclipse中,选择`Run` -&gt; `Debug Configurations`,在弹出的对话框中右击`Remote Java Application`,新建一个远程调试配置。 2. 在新窗口中,为远程调试配置起一个易于识别的名字,选择你要调试的项目,然后在...

    Myeclipse_Tomcat远程

    通常,远程调试Tomcat需要修改`catalina.sh`配置文件,设置JPDA(Java Platform Debugger Architecture)相关的参数,比如修改`JPDA_ADDRESS`来指定调试端口。但这种方法需要直接修改Tomcat的启动脚本,有些人可能...

    使用Eclipse远程调试Linux服务器Tomcat项目

    在Eclipse中,点击debug图标,选择Debug Configurations,打开窗口找到Remote Java Application,创建一个远程调试,按照以下步骤配置: 1. 点击Source Java Project将依赖的java code引入 2. 点击apply保存配置 ...

    Tomcat下配置远程调试

    - `JPDA_TRANSPORT`:指定通信方式,通常使用`dt_socket`表示通过TCP/IP协议进行通信。 - `JPDA_ADDRESS`:设置监听端口,默认情况下可以使用9000端口。需要注意的是,这个端口不能被其他服务占用。 - `JPDA_SUSPEND...

    实战验证过的最新远程Tomcat调试方式(基于IDEA2023/2024, JDK1.8, TOMCAT9, WIN10的)

    - 使能Debug模式(JPDA):直接在命令行中执行`catalina.bat jpda start`来启动Tomcat。 **坑1**: 使用`startup.bat`命令启动时,即使加上`jpda start`参数,也可能无法正确绑定8000端口。这是因为`startup.bat`与...

    JAVA远程调试.txt

    本文将详细介绍如何通过JAVA进行远程调试,包括配置环境、启动调试服务器以及连接远程调试客户端等步骤。 #### 一、JAVA远程调试概述 JAVA远程调试是指在一台计算机上设置调试环境(被调试端),并通过网络与另一...

    使用 Eclipse 远程调试 Java 应用程序

    Eclipse远程调试的基础是Java Platform Debugger Architecture (JPDA),它由JVM Tool Interface (JVMTI)、Java Debug Interface (JDI)、Java Debug Wire Protocol (JDWP)等组件构成。JPDA定义了一种标准架构,使得...

    Java远程调试

    1. **启动远程调试**:在Eclipse中选择Project &gt; Debug,然后创建一个新的“Remote Java Application”。 2. **配置调试参数**:在创建的远程调试项目中,指定远程服务器的地址和之前配置的监听端口(本例中为8818)...

    使用MyEclipse调试远程tomcat项目

    - 在左侧树形结构中,右键单击`Remote Java Application`,然后选择`New`。 - 给调试配置命名,例如“远程Tomcat调试”。 - 在`Connection`选项卡中,输入服务器IP地址和之前设置的端口号(8000)。 - 确保选择...

Global site tag (gtag.js) - Google Analytics