用JPDA轻松调试Java代码

开发者在线 Builder.com.cn 更新时间:2006-12-13作者:Builder.com.cn 来源:

JPDA实际应用

如果你需要使用套接字传送器,在对应的JVM中以dt_socket为名确定自变量的类型。如果被调试者和调试器位于同一机器之中,且运行的是Windows系统,你可以使用名为dt_schmem的共享内存连接器。如果你希望用一个与JPDA兼容的调试器调试应用程序,你应在调试模式下运行调试器,并提交其它参数,如传送器类型、主机名称、端口号及其它信息。所有JPDA和调试参数必须在启动应用程序时作为自变量提交。

要进行调试,你必须将调试JDWP代理加载到应用程序的JVM中。从Java 5.0开始,你可以用-agentlib:jdwp选项来完成加载。5.0以前版本则使用-Xdebug和-Xrunjdwp选项(5.0也支持-Xdebug和-Xrunjdwp选项,不过新的-agentlib:jdwp选项更加好用。因为5.0中的JDWP代理使用JVMTI接口连接VM,而非旧的JVMDI接口)。你应该向-agentlib:jdwp(Java 5.0中)或-Xrunjdwp(Java 5.0以前版本) 参数提供子选项;两组可能的子选项相同。

以下列方式指定子选项:

-agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...

-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...

你可以使用这些选项:

  • help:打印如何应用它的简单信息,并退出VM。
  • server:(是”y”或否”n”):如“server=y”,收到一个要依附的调试应用程序;如“server=n”,依附到指定地址的调试应用程序。
  • address:连接传送地址。如果server=n,尝试依附到这个地址的调试应用程序;如server=y,收到这个地址的连接。
  • timeout:如果server=y,它以毫秒为单位指定等待调试器依附的时间;如server=n,它以毫秒为单位指定依附到调试器所用的时间。
  • suspend:如“是”,JVM延缓执行,直到调试器与被调试JVM建立连接。

以下是命令行实例:

-agentlib:jdwp=transport=dt_socket,server=y,address=8000

在端口8000收听一个套接字连接。在主类加载前延缓这个VM(默认suspend=y)。一旦连接上调试应用程序,它发送一个JDWP命令恢复VM。

-agentlib:jdwp=transport=dt_shmem,server=y,suspend=n

选择一个有效的共享内存传输地址并将它打印出来。在那个地址收听一个共享内存连接。在调试应用程序依附之前,允许VM开始执行。

-agentlib:jdwp=transport=dt_socket,address=myhost:8000

通过myhost主机端口8000的套接字依附到一个运行的调试应用程序。在主类加载前延缓这个VM。

Peter V. Mikhalenko是一名获Sun认证的专业人士,现任德意志银行商业顾问。

责任编辑:张琎

查看本文国际来源

用户评论

  • 用户名
  • 评论内容