Intellij IDEA远程调试java控制台程序

Posted

技术标签:

【中文标题】Intellij IDEA远程调试java控制台程序【英文标题】:Intellij IDEA remotely debug java console program 【发布时间】:2015-04-28 10:33:25 【问题描述】:

我有一个运行 Java 的远程服务器,我可以通过 SSH 访问它。 我正在本地机器上编写一个应用程序,用 maven 构建它。 是否可以将 IDE Itellij IDEA 设置为远程运行我的项目?想法是:构建 jar,将其复制到服务器,然后调试进程(或类似的东西)。

很高兴您能分享我需要设置的设置。

【问题讨论】:

【参考方案1】:

这是我通常用来调试远程应用程序的方法。

    在调试模式下运行服务器

    这可以在您运行应用程序服务器时添加此特定行

    -Xdebug -Xrunjdwp:transport=dt_socket,server=n,suspend=n,address=9999
    

    对于1.4以上的JDK,可以使用这个

    -agentlib:jdwp=transport=dt_socket,server=n,suspend=n,address=9999
    

    之后,运行你的应用服务器

    SSH 隧道

    如果您使用 ssh 连接,我不能 100% 确定您可以直接访问应用程序的端口(嗯,也许有办法;))。因此,首先我们需要通过运行此命令公开我们在第一步设置的调试端口。

    ssh -f user@personal-server.com -L 9999:personal-server.com:9999 -N
    

    设置 IDE

    您可以按照@SSJVegito 所说的步骤进行操作,基本上是将调试器指向端口 9999。在您的 Idea 中打开调试配置,然后将圈出的值更改为 9999。然后,快乐调试:D

【讨论】:

我能够让它工作,但是像获取线程转储这样的事情非常慢,并且在我等待它们完成时冻结应用程序。应用程序冻结超过一秒钟对我来说是不可接受的。知道我能做些什么来解决它吗?【参考方案2】:

我认为这是可能的,我能够用我用来部署我的应用程序的本地服务器来做这样的事情。而且由于您可以访问服务器,它应该也适合您。

您需要在 IntelliJ 中做的是创建一个 Remote 配置。为此,打开 IntelliJ 并在运行按钮旁边(左侧),您应该有您的 配置,由向下箭头指定。单击该箭头并单击编辑配置。应打开一个新窗口。点击左上角的 + 符号,然后选择 Remote。应该会出现一个新窗口。我们现在需要设置服务器用于调试的主机和端口(如果您使用的是tomcat,通常是8000;在tomcat中,您可以通过打开catalina.bat文件找到它一个文本编辑器并寻找 JPDA_ADDRESS 属性,它允许您更改端口)。为您的配置命名,然后按应用

之后,您需要在调试模式下运行您的配置。您需要从配置列表中选择它,然后按位于 Run 按钮右侧的 Debug 按钮。

更多细节在这里:

http://blog.trifork.com/2014/07/14/how-to-remotely-debug-application-running-on-tomcat-from-within-intellij-idea/comment-page-1/

http://eclipse.org/jetty/documentation/current/debugging-with-intellij.html

http://www.javaranch.com/journal/200408/DebuggingServer-sideCode.html

我希望这会有所帮助。

【讨论】:

我可能误解了一些东西,但是为什么我需要 Tomcat 来运行一个简单的服务器端“hello world”控制台程序。我也没有发现任何提及到远程服务器的 ssh 连接。 我使用tomcat作为示例服务器。我的 Tomcat 是您通过 SSH 连接到的服务器。但是,我告诉您的内容适用于部署在该服务器上的应用程序,例如网络档案(.war 文件)。我不确定您请求的内容是否可以用于 .jar 文件(或者至少,我从未遇到过这种情况)。无论哪种方式,这都是您连接到远程服务器以便从 IntelliJ 调试您的应用程序的方式。

以上是关于Intellij IDEA远程调试java控制台程序的主要内容,如果未能解决你的问题,请参考以下文章

图文并茂教你学会使用 IntelliJ IDEA 进行远程调试

Java技术口碑课01Java程序员开发效率工具IntelliJ IDEA使用

使用 Intellij Idea 进行远程调试

在 IntelliJ IDEA 的 docker 容器中远程调试 Java 9

Idea IntelliJ远程调试教程

IntelliJ IDEA远程调试的几种方式