Java远程调试原理与运用

Java远程调试的原理是两个VM之间通过debug协议进行通信,然后以达到远程调试的目的。两者之间可以通过socket进行通信。

首先被debug程序的虚拟机在启动时要开启debug模式,启动debug监听程序。

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n zhc_application

zhc_application是main程序,server=y表示是监听其他debugclient端的请求。address=8000表示端口是8000

suspend表示是否在调试客户端建立连接之后启动 VM。如果为y,那么当前的VM就是suspend直到有debug client连接进来才开始执行程序。如果你的程序不是服务器监听模式并且很快就执行完毕的,那么可以选择在y来阻塞它的启动。

然后用一个debug客户端去debug远程的程序了,比如用Eclipse自带的debug客户端,填写运行被debug程序的虚拟机监听的端口号和地址,选择connect方式为attach。

Okay,现在就可以开始远程调试了。

Eclipse debug快捷键:

F5 Step into

F6 Step over

F7 Step out

F8 continue to the next breakpoint

Intellij debug的快捷键

F7,Step into

F8,Step over

Shift+F8, Step out

Alt+F9,运行至光标处

F9,恢复程序

原文:http://blog.csdn.net/hongchangfirst/article/details/44191925

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

时间: 2024-10-08 11:04:34

Java远程调试原理与运用的相关文章

xdebug远程调试原理分析

xdebug可以控制PHP程序的执行,这意味着xdebug可以在任何时候暂停或者恢复正在运行的PHP程序.当PHP程序被暂停的时候,xdebug可以获取到程序的有关 信息,比如变量的值等.xdebug也可以修改一个变量的值,然后再恢复暂停的程序,让其继续运行. xdebug配合IDE执行 可视化调试的流程 (类似于VisualStudio单步调试)被称为“远程调试”,是因为调试时有一个Server(xdebug)和一个Client(IDE),所以在调试的时候,被调试的PHP程序和调试PHP程序的

java远程调试(idea)

遇见一个怪异问题,无奈线上数据库有限制,只能远程调试下代码.突然发现,远程调试代码真的好简单,简单记录下操作步骤. 1.在idea里创建一个Remote,远程连接的入口. 找到 Edit Configgurations 这个选项. 找到左上角的加号,新建一个Configguration. 找到Remote,这就是远程调用的入口. a.修改远程服务器的ip b.这个端口是我们远程调用时候使用的端口,不是tomcat服务器的端口 c.选择与线上匹配的项目源码.然后得到箭头的参数. 2.设置Tomca

java 远程调试(java application与web application)

如摘要中所述,在联调时经常性的需要将程序部署到测试机器上,此时要调试显得很不方便.以前的做法都是在程序中打印信息来进行追踪,但是这种方法很有局限性,因为往往无法一次就定位到有问题的地方,需要不断的修改程序打印的语句,不断的重启应用,这需要花费大量的时间和精力.因此,采用远程调试会是一种好的解决方式.下面将会对java application和web application两种入手进行说明. 一.Java Application的远程调试 1.准备要调试的server端环境 首先准备一段小的代码,

linux下的java远程调试jpda+tomcat

项目放到linux服务器了,服务器的环境或者数据可能和我们本地不一样,这个时候我们可能需要远程的断点进行调试,来查看请求过程中的各个变量的值.这里我们的应用服务器用的tomcat5.5.17 这个时候你需要知道JPDA这个概念. 简单的概括下JPDA: Java Platform Debugger Architecture(JPDA:Java平台调试架构) 由Java虚拟机后端和调试平台前端组成  1.Java虚拟机提供了Java调试的功能  2.调试平台通过调试交互协议向Java虚拟机请求服务

linux下的java远程调试jpda+tomcat(转)

转载自 http://blog.csdn.net/kongqz/article/details/3971263 项目放到linux服务器了,服务器的环境或者数据可能和我们本地不一样,这个时候我们可能需要远程的断点进行调试,来查看请求过程中的各个变量的值.这里我们的应用服务器用的tomcat5.5.17 这个时候你需要知道JPDA这个概念. 简单的概括下JPDA: Java Platform Debugger Architecture(JPDA:Java平台调试架构) 由Java虚拟机后端和调试平

Java 远程调试

写服务端程序,在开发环境下打开远程调试还是非常有用的,还原现场非常容易,让请求方再发个请求即可.如果下来本地调试的话很多环境与管理服务的地址配置什么的都可能不一样,增加了可变因素. 在需要启动服务调试的jvm启动参数中加入(注意:参数要排在启动类名的前面) -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1234 dt_socket:使用的通信方式 server:是主动连接调试器还是作为服务器等待调试器连接 sus

开启Java远程调试

在JDK启动时,添加 -Xrunjdwp:transport=dt_socket,address=9900,server=y,suspend=n -Dcom.sun.management.jmxremote.port=40124 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 选中项目,右键 点击Debug开始远程调试

JAVA远程调试

1.远程端启动必须添加jvm参数 -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} 其中debug_port为自定义的调试端口 2. 本地连接远程服务器debug端口 打开Intellij IDEA,在顶部靠右的地方选择"Edit Configurations-",进去之后点击+号,选择"Remote",按照下图的只是填写红框内的内容,其中host为远程代码运

Java Remote Debug(idea远程调试)

概述 对于分布式系统的调试不知道大家有什么好的方法.对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时.今天咱们来了解了解Java远程调试这个牛逼的功能,本文以Intellij IDEA为例讲解怎么使用远程调试.以Thrift入门教程这篇文章中使用的程序作为例子.这个程序由Thrift服务端和客户端组成.描述一下远程调试需要解决的问题: 服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致