*如何远程调试IDE程序

---示例步骤:

1.配置IDE下的*.ini文件,加入如下内容

-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=[y默认值|n]

2.启动IDE

3.在'Debug Configurations'中'Remote Java Application'中新建一个配置

如下图

remoteDebug

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/

posted on 2010-11-23 15:06  戴忠  阅读(4590)  评论(0编辑  收藏  举报