【问题标题】:Attach IntelliJ IDEA debugger to a running Java process将 IntelliJ IDEA 调试器附加到正在运行的 Java 进程
【发布时间】:2014-02-02 13:02:24
【问题描述】:

是否可以将 IntelliJ IDEA 调试器附加到正在运行的 Java 进程?如果是,怎么做?

【问题讨论】:

标签: debugging intellij-idea


【解决方案1】:

是的!以下是您的设置方式。

运行配置

创建远程运行配置:

  1. 运行 -> 编辑配置...
  2. 点击左上角的“+”
  3. 选择最左侧窗格中的“远程”选项
  4. 选择一个名称(我将我命名为“远程调试”)
  5. 点击“确定”保存:

JVM 选项

上面的配置提供了三个只读字段。这些选项告诉 JVM 在运行应用程序时打开端口 5005 以进行远程调试。将适当的选项添加到您正在调试的应用程序的 JVM 选项中。您可能会这样做的一种方法是:

export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

但这取决于您运行应用程序的方式。如果您不确定这三个中的哪一个适用于您,请从第一个开始,然后逐个列出,直到找到合适的。

您可以将 suspend=n 更改为 suspend=y 以强制您的应用程序等到您连接 IntelliJ 后再启动。如果您要命中的断点发生在应用程序启动时,这将很有帮助。

调试

像往常一样启动您的应用程序,然后在 IntelliJ 中选择新配置并点击“调试”。

IntelliJ 将连接到 JVM 并启动远程调试。

您现在可以通过在需要的代码中添加断点来调试应用程序。应用程序的输出仍然会出现在之前的任何位置,但您的断点会在 IntelliJ 中命中。

【讨论】:

  • 我的 Intellij IDEA 15.0.2 on mac os el capitan 中没有“远程”选项。我怎样才能获得该选项?
  • @user674669 我不确定。也许Remote 在社区版中不可用?我用的是付费版。有社区版的人可以确认一下吗?
  • @CoryKlein 你知道远程调试时如何在 IntelliJ 中获取System.out.println 的输出吗?
  • @DonRhummy 如果您知道如何,我很乐意将该信息添加到此答案中,但 AFAIK IntelliJ 目前不支持从远程应用程序将 stdout 和 stderr 管道传输回 IntelliJ。
  • 如果远程服务器只能通过 ssh 访问,我们如何指定密钥文件?
【解决方案2】:

这是可能的,但您必须在启动应用程序时添加一些 JVM 标志。

您必须添加远程调试配置:编辑配置 -> 远程。

然后您会在显示的对话框窗口中找到必须添加到程序执行中的参数,例如:

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

然后,当您的应用程序启动时,您可以附加调试器。如果您希望您的应用程序等待调试器连接,只需将挂起标志更改为 y (suspend=y)

【讨论】:

  • 让我感到困惑的是,您编辑了下面的输入,然后更新了上面的选项字符串(至少在 13.1 CE 中。)
  • 嗯,从 14.0.2 开始,这些命令行参数是只读的。您可以编辑其中的几个。知道如何解决这个问题吗?
  • 另外,您通过设置这些选项来附加什么流程?
  • 第一个为我工作。其他人注意 - 我需要在 -jar 标志之前指定它。
  • @Nuzzolilo ,idea 中显示的命令行参数仅用于显示目的,因此它们是只读的。它们不应该被添加到idea,而是你要调试的远程java应用程序。
【解决方案3】:

在 AndroidStudio 或想法中

  1. 配置应用程序将被调试,打开编辑配置

添加“虚拟机选项”配置 “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” 记住“地址”

  1. 配置远程调试器 如果没有退出,点击+添加

指定与第 1 步“地址”相同的“端口”

【讨论】:

    【解决方案4】:

    另外,如果您想在调试模式下连接,请不要忘记您需要在应用程序 JAVA_OPTS 中添加“-Xdebug”标志。

    【讨论】:

      【解决方案5】:

      我还使用 Tomcat GUI 应用程序(在我的例子中:C:\tomcat\bin\Tomcat9w.bin)。

      • 转到Java标签:

      • 设置您的 Java 属性,例如:

        Java 虚拟机

        C:\Program Files\Java\jre-10.0.2\bin\server\jvm.dll

        Java 虚拟机

        C:\tomcat\bin\bootstrap.jar;C:\tomcat\bin\tomcat-juli.jar

        Java 选项

        -Dcatalina.home=C:\tomcat

        -Dcatalina.base=C:\tomcat

        -Djava.io.tmpdir=C:\tomcat\temp

        -Djava.util.logging.config.file=C:\tomcat\conf\logging.properties

        -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000

        Java 9 选项

        --add-opens=java.base/java.lang=ALL-UNNAMED

        --add-opens=java.base/java.io=ALL-UNNAMED

        --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED

      【讨论】:

        猜你喜欢
        • 2017-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-23
        • 2021-12-14
        • 1970-01-01
        相关资源
        最近更新 更多