java平台调试架构JPDA
为什么80%的码农都做不了架构师?>>>
最近使用WTP的Server功能很不爽,连tomcat服务器时java类中的任何改动都要重启服务器,一怒之下就改用JPDA了,以下是一些总结。
什么是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: 加载JVM的JPDA参考实现库
2.Xrunjdwp子参数(sub-options)配置
Xrunjdwp子参数的配置格式如下
-Xrunjdwp:[=],[=]...
几个例子
-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
执行,是可用的共享内存
启动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了
转载于:https://my.oschina.net/liting/blog/596659
java平台调试架构JPDA相关推荐
- Java 平台调试架构JPDA
转载自 Java-JPDA 概述 JPDA:Java 平台调试架构(Java Platform Debugger Architecture) 它是 Java 虚拟机为调试和监控虚拟机专门提供的一套接 ...
- linux java远程调试_[转]JPDA:Java平台调试架构(常用的远程调试方法)
原文出处:http://www.javaeye.com/topic/75128 最近使用WTP的Server功能很不爽,连tomcat服务器时java类中的任何改动都要重启服务器,一怒之下就改用JPD ...
- JPDA:Java平台调试架构
Java Platform Debugger Architecture( JPDA:Java平台调试架构) 由 Java虚拟机后端和 调试平台前端组成 1.Java虚拟机提供了Java调试的功能 ...
- java开发调试定位分析工具大全
Java是一种非常强大的编程语言,自问世以来就广受欢迎.作为现今十分流行的移动平台--Android的核心语言,它大大促进了移动通信行业的发展.因此可以肯定,随着Android平台的不断扩张,Java ...
- Java Agent 调试,Java agent debug
Java Agent 调试,agent debug 一.简介 Java agent 是在另外一个 Java 应用("目标"应用)启动之前要执行的 Java 程序,这样 agent ...
- JAVA毕业设计BS架构考研交流学习平台设计与实现计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计BS架构考研交流学习平台设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计BS架构考研交流学习平台设计与实现计算机源码+lw文档+系统+调试部署+数据库 本源码技 ...
- Java生鲜电商平台-缓存架构实战
Java生鲜电商平台-缓存架构实战 说明:在Java生鲜电商中,缓存起到了非常重要的作用,目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个k ...
- Java生鲜电商平台-订单架构实战
Java生鲜电商平台-订单架构实战 生鲜电商中订单中心是一个电商后台系统的枢纽,在这订单这一环节上需要读取多个模块的数据和信息进行加工处理,并流向下一环节:因此订单模块对一电商系统来说,重要性不言而喻 ...
- java毕业设计bs架构实习管理系统源码+系统+数据库+lw文档+调试运行
java毕业设计bs架构实习管理系统源码+系统+数据库+lw文档+调试运行 注意:该项目只展示部分功能,如需了解,文末获取源码地址. 临近学期结束,还是毕业设计,你还在做java程序.网络编程.课程设 ...
最新文章
- Linux音频设备驱动
- INTERVAL数据类型-007学习笔记
- Pub / Sub本地模拟器
- php html 停止工作,换行符php和html无法正常工作
- java netty能做什么_开发:Netty快速入门,一看就懂!
- 学python需要什么基础-学习Python需要哪些基础知识?
- Markdown 写作类软件 MWeb 和 Ulysses谁更好
- NumPy学习笔记之argsort()函数
- 自动驾驶 9-5: EKF 的局限性 Limitations of the EKF
- ErrorPageRegistrar根据不同的错误类型显示网页
- 漫画算法python篇pdf_漫画算法:小灰的算法之旅(Python篇)(全彩)
- PMP试题 | 每日一练,快速提分 7.5
- 在linux下安装gaussian09
- 用 reStructuredText 写作:快速入门指南
- C++内存泄漏和内存碎片的产生及避免策略
- 大白菜u盘装win10步骤图解
- windows 10 ltsc 安装微软商店
- 解析 URP 教务系统, 创建查成绩 APP !
- 企业WiFi认证,怎么确保企业WiFi安全?
- 微信小程序中显示换行、空格
热门文章
- 小程序 | 获取用户头像信息接口改进:getUserInfo的使用
- Java快速入门学习笔记1 | Eclipse使用
- Flame v1.4 – 文章、视频、音乐、测验 多功能PHP CMS
- 任务app源码运营版本
- 6系A卡笔记本移动版:HD6470/6550/6630/6650/6730/6770M
- ReadProcessMemory函数的分析
- Asp.Net 4.0 SEO增强之UrlRouting
- 倍受好评的美国主机JustHost使用全攻略教程
- VS2017——50G超豪华IDE套餐酸爽体验!
- 使用beego开发多表查询返回字段问题