JVM远程DEBUG(JPDA )
来源:互联网 发布:电脑桌面图标整理软件 编辑:程序博客网 时间:2024/04/28 21:46
原理
1. JPDA简介
JPDA(Java Platform Debugger Architecture)为Java平台上的调试器定义了一个标准的体系结构。该体系结构包括3个主要组成部分:JVM TI、JDI和JDWP。
JVM TI的全称是Java Virtual Machine Tool Interface,它定义了JVM为了支持调试而必须提供的功能及相应的访问接口。这些访问接口是以本地语言的形式提供的,由JVM(比如Sun公司的HotSpot VM)负责实现。
JDI的全称是Java Debug Interface,它定义了访问JVM TI接口的高层API,以纯Java语言提供,由JDK实现(在Sun JDK的tools.jar可以找到)。调试器直接使用JDI来实现调试的功能。与JPDA back-end相对应,JDI实现的角色就是JPDA front-end。
JDWP的全称是Java Debug Wire Protocol,它定义了JPDA front-end和JPDA back-end之间通讯信息的二进制格式。这里的通讯信息主要包括两种:调试器发送给JVM的请求信息和JVM发送给调试器的调试信息。
总结一下,调试器调用JDK提供的JDI实现 (JPDA front-end),经由JDWP协议 ,和JVM自带的JPDA back-end(jdwp.dll, jdwp.so, …)进行通讯。JPDA back-end 通过调用JVM TI接口 ,从而获知调试信息,或发送控制命令。然后,JPDA back-end 将调试信息或命令执行结果,通过JDWP协议 ,返回给调试器 。
2. 如何启用JPDA
默认情况下,JVM并没有启用JPDA back-end。需要在启动JVM的命令行加载以下参数:
-Xdebug -Xrunjdwp:transport=dt_socket, address=8000,server=y,suspend=y
-Xdebug
启用调试特性。
-Xrunjdwp
启用JDWP实现,它包含若干子选项。
transport=dt_socket
JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。
address=8000
JVM在8000端口上监听请求。
server=y
y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
suspend=y
y表示启动的JVM会暂停等待,直到调试器连接上。
步骤
1. 登录到测试机并切换到应用BIN目录
2. sudo ./start.sh debug 以调试模式启动应用
3. 用IDEA导入开发代码
4. 新建Remote调试配置
5. 启动远程调试
注意事项:
请忽随意DEBUG测试环境中的公用服务,否则会导致调用方卡死乃至超时,影响测试。
建议在需要的时候,单独部署一个版本做调试用。
- JVM远程DEBUG(JPDA )
- 使用JPDA远程debug
- tomcat 远程debug,jpda的使用
- JVM JPDA远程调试通用配置
- JVM JPDA Tomcat远程调试配置
- JVM配置远程debug
- JVM远程DEBUG
- java debug jpda配置
- JPDA WEBLOGIC远程调试
- Java远程调试-JPDA
- java jpda远程调试
- JPDA远程调试
- jpda tomcat远程调试
- java 远程debug JVM参数
- 远程debug,jvm参数配置
- 初探JVM的背面JPDA(Java Platform Debugger Architecture)
- 利用JPDA进行Remote Debug
- Debug Tool-01-JPDA体系
- Linux---centos编译安装mysql5.6
- 关于屏幕适配问题的解决方案
- IOS开发之UIView总结
- GCD 之线程死锁
- FFmpeg的一些关键的数据结构(一)
- JVM远程DEBUG(JPDA )
- JFinal+maven+freemarker入门教程
- FFmpeg的一些关键的数据结构(二)
- Mockito:一个强大的用于Java开发的模拟测试框架
- Java 垃圾回收
- IOS用CGContextRef画各种图形
- TestNG 入门
- 好玩的linux命令
- hdu 1709 母函数