使用eclipse远程调试服务器/客户端应用程序

时间:2016-06-03 12:09:19

标签: java eclipse remote-debugging

启动我的服务器/客户端我将客户端作为命令行参数传递给服务器,两个进程都是startet。

java -cp bin this.is.an.example.server "java -cp C:\this\is\another\example\bin\client main.Client"

为了试图调试它我通过在服务器运行配置中添加客户端作为参数来安装eclipse。有效。不幸的是这种方式我只能调试服务器。我无法在运行时访问客户端,因为它在另一个进程中运行。

所以我开始寻找解决方案并找到一些像这样的教程,例如tutorial_1

我已添加到命令行java -cp bin this.is.an.example.server "java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:56111,suspend=y -cp C:\this\is\another\example\bin\client main.Client"

对于我在eclipse中的客户,我添加了一个远程调试配置,如图6中的tuttorial。

当我在eclipse中调试它时说

  

等待vm连接到端口56111

但没有任何反应。

所以这是我的问题:

  1. 我是以正确的方式做的吗?或者是否有另一种可能更简单的方法来调试我的客户端?有什么建议吗?
  2. 如果远程调试没问题。是否可以通过将参数传递给我的服务器来启动远程调试,然后启动客户端 Process process = Runtime.getRuntime().exec(command);

1 个答案:

答案 0 :(得分:1)

请阅读:http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/conninv.html#Transports

  

在客户端附加到服务器,套接字传输的上下文中   地址的格式为":"主持人在哪里   name,是它附加的套接字端口号或   倾听。在服务器等待客户端附加的上下文中,   地址只包含端口号(主机名是   隐含的)。

  

名称:地址

     

必需:是,如果server = n否,否则

     

默认值:""

     

description :的传输地址   连接。如果server = n,则尝试连接到调试器应用程序   这个地址。如果server = y,则在此地址侦听连接。

从我对这种调用的理解:

java -cp bin this.is.an.example.server "java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:56111,suspend=y -cp C:\this\is\another\example\bin\client main.Client"

客户端应用程序具有尝试连接到127.0.0.1:56111的配置。根据我的理解,您想调试服务器,所以我认为您应该将调用更改为:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=56111,suspend=y -cp bin this.is.an.example.server "java -cp C:\this\is\another\example\bin\client main.Client"

但是,如果客户端应用程序应该监听连接,那应该是这样的:

java -cp bin this.is.an.example.server "java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=56111,suspend=y -cp C:\this\is\another\example\bin\client main.Client"

如果Java> = 5.0,请考虑将-Xrunjdwp更改为-agentlib:jwdp。