`

eclipse调试

    博客分类:
  • Java
阅读更多

eclipse远程调试

在eclipse3.4前,远程调试时eclipse只能当客户端(如下图中只有一个选项),而到eclipse3.4或之后,eclipse即可当客户端也可当服务端来远程调试。

 

虚拟机调试参数设置

清单 2 是一个示例,显示如何在调试模式下启动 VM 并监听端口 8765 的套接字连接。


清单 2. 作为调试服务器的目标 VM

 

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8765

 

清单 3 显示如何使用位于 8000 端口的主机 127.0.0.1 上的套接字连接运行中的调试器应用程序。


清单 3. 作为调试客户机的目标 VM

 

-Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000


 

各参数的意义:

Xdebug

启用调试特性。

-Xrunjdwp:<sub-options>

在目标 VM 中加载 JDWPJava 调试网络协议Java Debug Wire Protocol 实现。它通过传输和 JDWP 协议与独立的调试器应用程序通信。下面介绍一些特定的子选项。

注,从 Java V5 开始,您可以使用 -agentlib:jdwp 选项,而不是 -Xdebug -Xrunjdwp。但如果连接到 V5 以前的 VM,只能选择 -Xdebug -Xrunjdwp。下面简单描述 -Xrunjdwp 子选项。

transport

这里通常使用套接字传输。但是在 Windows 平台上也可以使用共享内存传输。

server

如果值为 y,目标应用程序监听将要连接的调试器应用程序(VM端作为服务器)。否则,它将连接到特定地址上的调试器应用程序(eclipse端作为服务器)。

address

这是连接的传输地址。如果服务器为 n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。

suspend

如果值为 y,目标 VM 将暂停,直到调试器应用程序进行连接。

 

Ganymede 中共有两个连接器:

  • Socket Attach (连接套接字的连接器)
  • Socket Listen (监听套接字的连接器)

如下图:

 

对于监听套接字的连接器,Eclipse VM 将是与远程 Java 应用程序连接的主机。对于连接套接字的连接器,目标 VM 将作为主机。这两种连接器对应用程序调试没有影响,用户可以任意选择。

 

在调试 Java 应用程序之前,需要确保编译类前启用所有调试选项,否则调试时将收到一个错误信息,比如 “Debug information is not available” “Unable to install breakpoint due to missing line number”。您可以通过更改 Eclipse 菜单上的 Window > Preferences > Java > Compiler 来修改类文件调试选项: 

 

导出可运行的jar

右键单击 Java 项目,选择 Export,然后选择 Java,最后选择Runnable JAR file 导出项目。将在指定的位置生成 JAR 文件。注意,如果 Java 源代码与目标应用程序不匹配,调试特性将不能正常工作。

 

 

应用程序作为调试服务器

下面这个示例远程调用 Java 应用程序作为调试服务器,并在端口 8000 监听套接字连接。VM 将暂停,直到调试器连接上。

 

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address="8000" -jar test.jar

 

使用远程启动配置启动 Eclipse,并指定远程应用程序的目标 VM 地址。为此,单击 Run > Debug Configurations,然后在 Eclipse 菜单中双击 Remote Java Application。从最新创建的启动配置中为目标应用程序指定 IP 和端口。为了在同一台机器上运行远程应用程序,仅需将主机 IP 指定为 localhost 127.0.0.1

如果选择 Allow termination of remote VM(允许终止应用程序调试期间连接的 VM 选项,即当你打上这个钩时,eclipse调试视图终止远程虚拟机的停止按钮可用:

 

应用程序作为调试客户机

第二个示例使用一个简单的 Java 应用程序作为调试客户机,并且调试器前端作为调试服务器。Eclipse 使用套接字监听模式连接类型进行监听。必须先启动调试前端来监听特定的端口。下图给出一个用于设置监听的示例配置。

单击 Eclipse Debug 按钮,状态栏将显示消息 “waiting for vm to connect at port 8000...”。看到这个消息后,再启动远程应用程序。下面清单显示了如何将 Java 应用程序作为调试客户机并调用它,然后使用端口 8000 上的主机 127.0.0.1 的套接字将其连接到一个正在运行的调试器应用程序。

java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y -jar test.jar

如果一切进行顺利,将会显示一个调试透视图帮助调试应用程序,并且远程 Java 应用程序将正常停止,等待你的调试。 

  • 大小: 9.5 KB
  • 大小: 9 KB
  • 大小: 7.1 KB
  • 大小: 15.7 KB
  • 大小: 6.6 KB
  • 大小: 15.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics