文档章节

Java 远程调试原理(学习笔记)

ND小龙
 ND小龙
发布于 2017/08/29 01:34
字数 678
阅读 166
收藏 3

Java远程调试的原理

JDWP(Java Debug Wire Protocol)

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

其中,调试的程序常常被称为debugger, 而被调试的程序称为 debuggee。

 

应用场景

当你的开发环境在Window,又在远端linux Server或者移动平台上运行Java应用程序,Java提供了一系列的接口和协议让本地Java文件于远端JVM建立联系和通信。

 

Java 调试器架构

从下往上读架构,大致可以解读为: 用于调试的程序使用UI,通过Protocol,调用远端JVM进程。

实质还是JVM,只要确保本地Java 源代码与目标应用程序一致,本地的Java源码就可以用socket连接到远端的JVM,进而执行调试。

 

在Socket Attach模式下,本地只需要有源码,Java应用程序根本不用启动。

Socket Attach方式:

 

实际操作

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

 

在启动程序时,将以下参数选项添加到自定义的命令行中,程序就会以支持RemoteDeubg的方式启动。

wrapper.java.additional.1=-Xdebug
wrapper.java.additional.2=-Xrunjdwp:transport=dt_socket,server=y,address=7899,suspend=n

 

DEBUG选项参数的意思

-XDebug 启用调试;
-Xrunjdwp 加载JDWP的JPDA参考执行实例;
transport 用于在调试程序和VM使用的进程之间通讯;
dt_socket 套接字传输;
server=y/n VM是否需要作为调试服务器执行;
address=7899 调试服务器监听的端口号;
suspend=y/n 是否在调试客户端建立连接之后启动 VM 。

 

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

在程序中打好断点,打开Eclipse配置

Run-->Debug Configurations…-->Remote java Application-->右键New-->填写Host和Port(例如,Host:10.75.0.103,Port:7899)-->Debug

 

注意,如果 Java 源代码与目标应用程序不匹配,调试特性将不能正常工作。

选择 Allow termination of remote VM 选项 可以在应用程序调试期间终止连接

这样远程调试连接上之后,就可以像在本地调试Java程序一样来调试远端的Java应用程序。

 

 

IDE快捷键

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/alli0968/article/details/42176721

共有 人打赏支持
ND小龙
粉丝 10
博文 45
码字总数 2295
作品 0
福州
私信 提问
weblogic debug配置

1.1. 软件环境 Eclipse 3.1 Weblogic 8.1 1.2. 工作原理 远程调试就是允许利用 java tools 里面的jdb 程序连接远程的JAVA虚拟机,进行远程debug ,同时远程的虚拟机启动时候需要开启 debug ...

ianLi
2012/11/02
0
0
java编程好文章链接收集

JNDI配置原理详解 ExtJS学习笔记系列 .java中的io系统总结及一些常用的操作 java面试笔试题总结 Java基础:三步学会Java Socket编程 HTTP详解 SpringSide开发实战 SVN与源代码管理 Linux和J...

长平狐
2012/11/12
47
0
eclipse远程debug,java项目

首先java项目要支付可远程调试得到启动时加入参数 启动远程调试 启用JMX,远程性能观察 eclipse配置 其中:host为远程java程序提供远程调试的IP,post为远程java程序提供远程调试的端口 使用 ...

有事没事
2014/12/05
0
0
阿里P8架构师总结的互联网Java架构系统化学习路线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/83181980 网络应用,最常见的研发语言是Java的和PHP。 后端服务,最常见的...

JAVA高级架构v
10/19
0
0
编写你的第一个HelloWorld

写在前面的话 因为Java基础是以后学习框架的基石,因此开个文集首先写写Java基础,本来想直奔基础知识的介绍,但是为了保证知识的完整性,因此从Java安装和运行“hello world”开始(虽然百度...

nanaFighting
06/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
32分钟前
0
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
1
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
1
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
1
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部