我是通过eclipse中的另一个java进程以编程方式执行java进程:
Process process = Runtime.getRuntime().exec(command, envp, dir);
有没有办法告诉eclipse调试子进程?
或者,我可以通过在完成启动过程B中链接多个启动配置(即启动过程A)来解决此问题 - 提供的B可以在调试模式下启动。
答案 0 :(得分:3)
向子进程添加命令行选项,如下所示:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9999
(您可以使用不同于9999的端口号,这取决于您,但最好选择1024以上的数字)
然后在Eclipse中,创建“远程Java应用程序”类型的调试配置。将主机设置为localhost,将端口设置为9999。
This developerWorks article有很多额外信息。
编辑:为了更灵活地指定子流程的命令行和环境,请使用java.lang.ProcessBuilder
类而不是Runtime.exec(...)
。
答案 1 :(得分:3)
如果在Eclipse中使用“远程调试”功能,则可以将其指向任何JVM实例。您只需要确保告诉每个实例使用唯一的JDWP端口。这是您从命令行执行此操作的方法:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8998,server=y
因此,将'address'部分更改为您想要的任何端口,然后您可以将Eclipse指向该端口。以下是一些更多信息:
http://java.dzone.com/articles/how-debug-remote-java-applicat