`

java 远程调试

    博客分类:
  • J2EE
阅读更多

什么是JPDA 
  Java Platform Debugger Architecture(JPDA:Java平台调试架构) 由Java虚拟机后端和调试平台前端组成 
  1.Java虚拟机提供了Java调试的功能 
  2.调试平台通过调试交互协议向Java虚拟机请求服务以对在虚拟机中运行的程序进行调试 

  JPDA的构架 
  JPDA通过两个接口和协议来完成如上的说明,分别是JVMTI(Java虚拟机工具接口)、JDWP(Java调试连线协议)和JDI(Java调试接口)。 
  1.JVMTI定义了虚拟机应该提供的调试服务,包括调试信息(Information譬如栈信息)、调试行为(Action譬如客户端设置一个断点)和通知(Notification譬如到达某个断点时通知客户端),该接口由虚拟机实现者提供实现,并结合在虚拟机中 
    2.JDWP定义调试服务和调试器之间的通信,包括定义调试信息格式和调试请求机制 
    3.JDI在语言的高层次上定义了调试者可以使用的调试接口以能方便地与远程的调试服务进行交互,Java语言实现,调试器实现者可直接使用该接口访问虚拟机调试服务。 

  运行方式 
  当虚拟机的调试服务运行时,虚拟机作为调试的服务提供端,监听一个连接,而调试器通过该连接与虚拟机进行交互。目前,Windows平台的JVM提供了两种方式的连接:共享内存和 Socket连接,共享内存的服务提供端和调试端只能位于同一台机,而Socket连接则支持不同异机调试,即远程调试。 

  虚拟机参数设置 
  1.启用调试服务 
    -Xdebug 启用调试 
    -Xrunjdwp:<sub-options> 加载JVM的JPDA参考实现库 
  2.Xrunjdwp子参数(sub-options)配置 
    Xrunjdwp子参数的配置格式如下 
    -Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]... 

  几个例子 
  -Xrunjdwp:transport=dt_socket,server=y,address=8000 
  在8000端口监听Socket连接,挂起VM并且不加载运行主函数直到调试请求到达 
  -Xrunjdwp:transport=dt_shmem,server=y,suspend=n 
  选择一个可用的共享内存(因为没有指address)并监听该内存连接,同时加载运行主函数 
  -Xrunjdwp:transport=dt_socket,address=myhost:8000 
  连接到myhost:8000提供的调试服务(server=n,以调试客户端存在),挂起VM并且不加载运行主函数 
  -Xrunjdwp:transport=dt_shmem,address=mysharedmemory 
  通过共享内存的方式连接到调试服务,挂起VM并且不加载运行主函数 
  -Xrunjdwp:transport=dt_socket,server=y,address=8000, 
  onthrow=java.io.IOException,launch=/usr/local/bin/debugstub 
  等待java.io.IOException被抛出,然后挂起VM并监听8000端口连接,在接到调试请求后以命令/usr/local/bin/debugstub dt_socket myhost:8000执行 
  -Xrunjdwp:transport=dt_shmem,server=y,onuncaught=y,launch=d:\bin\debugstub.exe 
  等待一个RuntimeException被抛出,然后挂起VM并监听一个可用的共享内存,在接到调试请求后以命令d:\bin\debugstub.exe dt_shmem <address>执行,<address>是可用的共享内存 

  启动tomcat 
    -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n 

    以上两行是tomcat5.5.12的catalina.bat文件中的一句,可以看出tomcat在JPDA方式下是怎么启动的,启动tomcat要用catalina jpda start来启动,不能用startup.bat启动,启动前设置好JPDA_TRANSPORT,JPDA_ADDRESS就OK了 

================================================================

下面的方式也可以在tomcat运行时打开远程调试端口

 

You need to modify the startup.bat, add jpda when start

 

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

 

:end

 

Modify catalina.bat,

set JPDA_TRANSPORT=dt_socket

:gotJpdaTransport

if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress

set JPDA_ADDRESS=1045

 

分享到:
评论

相关推荐

    java远程调试操作步骤

    ### Java远程调试操作步骤 #### 一、准备工作 在进行Java远程调试之前,我们需要完成一些必要的准备工作,确保环境配置正确。 ##### 1.1 安装JCE无限制策略文件 根据描述中的“下载UnlimitedJCEPolicyJDK8”,这...

    JAVA远程调试教程

    如果你发现你的代码在本地运行良好,但是一旦上测试环境、预发布环境或生产环境就出现问题,那么可以执行JAVA远程调试,以彻底搞清楚为什么一上生产环境就会出现问题,本教程就是介绍如何实现JAVA远程调试,即如何在...

    Java远程调试

    ### Java远程调试详解 在软件开发领域,尤其是大型分布式系统或微服务架构中,Java远程调试是一项关键技能,它允许开发者在本地机器上调试运行在远程服务器上的Java应用程序,极大地提高了问题定位和解决效率。本文...

    java 远程调试一个朋友推荐

    根据提供的文件信息,我们可以深入探讨Java远程调试的相关知识点。标题提到的是“java远程调试一个朋友推荐”,这表明文章主要关注的是如何通过特定的技术或工具来进行Java应用的远程调试。描述部分进一步强调了这一...

    java 远程调试 ppt, 内有demo,简单实用

    Java远程调试是一项强大的技术,它允许开发者在不同的设备或服务器上对Java应用程序进行调试,而无需实际坐在该设备前。这份“Java远程调试PPT”深入浅出地讲解了这一主题,包括JVM的调试模型、Eclipse的调试技巧、...

    PHP,JAVA远程调试

    在IT行业中,开发人员经常需要面对复杂的问题,这时远程调试技术就显得尤为重要。... 首先,让我们了解一下什么是远程...通过阅读《PHP,Java远程调试教程.docx》这份文档,相信你会得到更具体的步骤指导和实践经验分享。

    JAVA远程调试.txt

    ### JAVA远程调试详解 在开发过程中,特别是在分布式系统或微服务架构中,远程调试成为解决复杂问题的关键技术之一。本文将详细介绍如何通过JAVA进行远程调试,包括配置环境、启动调试服务器以及连接远程调试客户端...

    解决java远程调试ClosedConnectionException错误

    解决Failed to connect to remote VM com.sun.jdi.connect.spi.ClosedConnectionException错误,tomcat远程调试

    java开发如何进行远程调试远程服务器,在远程服务器上设置断点

    以下将详细介绍如何进行Java远程调试以及在远程服务器上设置断点。 首先,理解远程调试的基本原理是关键。Java提供了Java Debug Wire Protocol (JDWP) 来支持远程调试。JDWP是一个协议,使得调试器能够与Java虚拟机...

    远程调试方法参数配置

    本文将详细解释远程调试方法中的参数配置,尤其是针对使用Tomcat服务器进行Java远程调试的情况。 #### 远程调试基本概念 远程调试是指通过网络连接,在本地计算机上控制并调试运行在远程服务器上的程序。这种方式...

    JAVAECLIPSE下配置WINDCHILL远程调试WINDCHILL学习笔记.pdf

    ### JAVAECLIPSE 下配置 WINDCHILL 远程调试详解 #### 一、配置概述 本文档旨在详细介绍如何在 JavaEclipse 环境下配置 Windchill 进行远程调试的过程。远程调试是指在一个主机上调试运行在另一台机器上的应用程序...

    NC eclipse 远程调试

    NC Eclipse 远程调试是指在 Eclipse 集成开发环境中,使用 Java Debug Wire Protocol (JDWP) 实现远程调试 Java 应用程序的功能。JDWP 是一个基于 socket 的通信协议,用于在 debug 客户端和服务器之间传输调试信息...

    Eclipse远程调试Java代码

    本篇文章将详细讲解如何在Eclipse中设置和使用远程调试Java代码。 首先,我们需要理解远程调试的基本原理。远程调试允许开发者在本地IDE上对运行在另一台机器上的应用程序进行调试。这通常通过JVM的远程调试接口...

    Java开发环境Eclipse远程调试端口配置

    ### Java开发环境Eclipse远程调试端口配置 #### 运行环境配置 为了实现Java Eclipse远程调试功能,首先需要确保本地开发环境与远程服务器环境之间的兼容性和一致性。具体步骤如下: 1. **运行ncSysconfig命令**:...

    Myeclipse远程调试方法及配置

    MyEclipse作为一款强大的Java集成开发环境,提供了远程调试功能,使得开发者能够远程连接到运行在其他机器上的应用,进行实时的代码调试。下面我们将详细讲解MyEclipse远程调试的配置方法及其相关知识点。 1. **...

    NC开发环境远程调试端口配置.docx

    配置Java运行参数,以便在远程调试中使用。 * 例如,配置-Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8999的参数,其中IP和端口号可以根据需要修改。 四、WAS环境开远程调试方法 * 在WAS环境中,...

    windchill远程调试详细介绍

    Windchill 是一种基于 Java 平台的开发环境,它提供了一个强大而灵活的远程调试机制。本文将详细介绍 Windchill 远程调试的配置和实现过程。 一、Windchill 远程调试概述 Windchill 远程调试是指在 Windchill 开发...

    Elipse远程调试

    默认的Java远程调试端口通常是8000或8001,但实际使用中可能需要根据服务器配置进行调整。 2. **断点(Breakpoint)**:断点是调试的关键,它允许程序在特定行暂停执行,这样开发者就可以检查此时的变量值、调用栈...

    tomcat远程调试-好用的神器

    通常,这样的脚本会包含Java命令行参数,如`-Xdebug`和`-Xrunjdwp`,这些参数是开启Java远程调试所必需的。例如: ```bat set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n `...

    javajava调试java调试java调试java调试

    Java调试是开发者日常工作中不可或缺的一部分,它涉及到对代码的深入理解和问题排查能力。在Java编程过程中,遇到程序出错或运行异常时,调试是找出问题源头的关键步骤。本文将详细介绍Java调试的一些核心技术和方法...

Global site tag (gtag.js) - Google Analytics