*如何远程调试IDE程序
---示例步骤:
1.配置IDE下的*.ini文件,加入如下内容
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=[y默认值|n]
2.启动IDE
3.在'Debug Configurations'中'Remote Java Application'中新建一个配置
如下图
4.单击'Debug',开始debug.
---说明
1.这里server=y表示IDE端作为服务接入端,此时eclipse对应的连接类型为'Socket Attach'
若server=n,或没有server项,则连接类型为'Socket Listen'
*-agentlib:jdwp
---示例
-agentlib:jdwp=transport=dt_socket,server=y,address=8000
这样和-Xrunjdwp:transport=dt_socket,server=y,address=8000是等效的.
总之,对VM的特性是值得很多研究的.
以下内容主要来自参考文档的摘要,稍作补充
*为了进行远程调试,必须使用 Java Virtual Machine (JVM) V5.0 或更新版本
*概念
---JPDA 由两个接口(分别是 JVM Tool Interface 和 JDI)、一个协议(Java Debug Wire Protocol)和两个用于合并它们的软件组件(后端和前端)组成。它的设计目的是让调试人员在任何环境中都可以进行调试
---连接器是一个 JDI 抽象,用来在调试器应用程序和目标 VM 之间建立连接。传输定义应用程序如何进行访问,以及数据如何在前端和后端之间传输。连接器 “映射” 到可用的传输类型和连接模式。在 Sun 的 JPDA 参考实现中,为 Microsoft® Windows® 提供了两个传输机制:套接字传输和共享内存传输。可用的连接器:
* 连接套接字连接器
* 连接共享内存连接器
* 监听套接字连接器
* 监听共享内存连接器
* 启动命令行连接器
*命令行参数
---'-Xdebug' 启用调试特性。
---'-Xrunjdwp:<sub-options> '
在目标 VM 中加载 JDWP 实现。它通过传输和 JDWP 协议与独立的调试器应用程序通信。下面介绍一些特定的子选项。
从 Java V5 开始,您可以使用 -agentlib:jdwp 选项,而不是 -Xdebug 和 -Xrunjdwp。但如果连接到 V5 以前的 VM,只能选择 -Xdebug 和 -Xrunjdwp。下面简单描述 -Xrunjdwp 子选项。
transport
这里通常使用套接字传输。但是在 Windows 平台上也可以使用共享内存传输。
server
如果值为 y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。
address
这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。
suspend
如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接,默认值为y.
如果值为 n,目标 VM 将启动.
---示例
java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y
-jar test.jar
*参考
http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/