使用Eclipse或其他方法在linux目标上进行Java远程调试

时间:2014-07-27 18:35:35

标签: java linux eclipse debugging remote-debugging

有人能告诉我在linux目标上远程调试Java的好方法吗?

我之后是构建我的Java项目,部署到目标然后在目标上调试的方法。 我知道java可以通过启动带有调试标志的JAR来调试目标 e.g。

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y suspend=y -jar stockTradingGUI.jar

但我不知道如何触发将已构建的JAR部署到目标并通过Eclipse以调试模式运行。

有没有人有任何想法?

由于

1 个答案:

答案 0 :(得分:3)

使用 Eclipse 本身,人们通常不会尝试将构建的JAR部署到目标并让它以调试模式运行。相反,在部署新构建的jar并使用各种调试/挂起标志启动它之后,可以在 Eclipse 中启动远程调试会话,以允许您远程连接到它。

有多种方法可以进行部署。

最简单的方法是简单地执行常规内置的 Eclipse (或通过 ant 在命令行中使用或使用您正在使用的任何构建工具),手动< em> scp 将jar转到远程位置,将 ssh 放入框中,然后使用必要的命令启动应用程序。

另一种选择是使用部署框架,例如 fabric (用 Python 编写),它将进行构建, scp 将其转换为您的远程位置,然后运行您需要运行的任何命令,以便启动并运行(即首先停止现有的 Tomcat 实例等,或者不管情况如何)。您可以在 fabfile 中设置不同的环境,例如 debug prod ,这样您就可以在 debug 中部署它>模式适用于您现在正在寻找的情况,然后在 prod 模式下,它会正常部署并运行。

如果您使用 Gradle ,它有一些工具,例如 Cargo 可以帮助进行远程部署,或者使用 ssh <更简单的用例/ em>插件和更直接地管理事物(有关详细信息,请参阅http://java.dzone.com/articles/replace-your-scripts-gradle)。

根据OP的评论进行编辑:

我自己没有使用过远程系统资源管理器,但它在某种程度上似乎是extensible(参见服务和子系统层),尽管从根本上说它似乎仍然存在以UI为中心。

对于这种用例,我建议给予 Gradle 另一种外观,因为它专注于构建,非常易于扩展,并且可以集成到 Eclipse 或完全在命令行上运行。