首页 文章

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

提问于
浏览
1

谁能告诉我一个在linux目标上远程调试Java的好方法?

我所追求的是构建我的Java项目,部署到目标然后在目标上调试的一些方法 . 我知道java可以通过启动带有调试标志的运行JAR来调试目标 .

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

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

有没有人有任何想法?

谢谢

1 回答

  • 3

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

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

    最简单的方法是简单地做一个常规内置的Eclipse(或者在命令行中通过ant或使用你正在使用的任何构建工具),手动将jar转到远程位置,然后ssh到框中并启动应用程序使用必要的命令 .

    另一个选择是使用一个部署框架,例如fabric(用Python编写),它将进行构建,将其scp到你的远程位置,然后运行你需要运行的任何命令,以便启动并运行(即停止现有的Tomcat实例等,或者不管是什么情况) . 您可以在fabfile中设置不同的环境,例如debug和prod,这样您就可以在调试模式下部署它,就像您现在正在寻找的那样,然后在prod模式下,它可以正常部署并运行 .

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

    Edit in response to comment from OP:

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

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

相关问题