仅在测试或生产服务器上可能不会发生任何问题。 在本地计算机上可能无法复制。 在这种情况下,您希望将IDE连接到远程测试(或生产)服务器并进行远程调试。

可以通过以下两个简单步骤对Java应用程序进行远程调试:

  1. 将远程调试参数传递给JVM。
  2. 配置IDE。

让我们回顾本文中的这两个步骤。

步骤1:将远程调试参数传递给JVM

通常,您将像这样启动Java应用程序:

<<start:code>>
java -jar app.jar
<<end:code>>

要启用远程调试,您需要传递以下附加参数:

<<start:code>>
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar app.jar
<<end:code>>
  • -Xdebug :启用JVM进行远程调试。
  • -Xrunjdwp :指定连接详细信息:
  • transport :配置应用程序和调试器之间的传输。 它可以具有2个值: dt_socketshmemdt_socket指示套接字接口。 shmem将通过共享内存区域指示应用程序和调试器接口,这仅在应用程序和调试器都在同一台计算机上运行时才有用。
  • address :应用程序将打开该端口以进行远程调试。
  • suspend :它可以有两个值。 y表示应用程序将被挂起,直到将任何远程调试器连接到该应用程序为止。 n表示即使没有远程调试器连接到应用程序,应用程序也不会被挂起。

还请参见:

步骤2:配置IDE

以下是配置Eclipse IDE以连接到远程应用程序的步骤:

  1. java 调用 远程spark java远程调试工具_jvm

  2. 图1:单击“调试”菜单图标
  3. 单击“调试配置...”菜单项。
  4. java 调用 远程spark java远程调试工具_mysql_02

  5. 图2:选择“远程Java应用程序”
  6. java 调用 远程spark java远程调试工具_jvm_03

  7. 图3:单击“新建”按钮
  8. 现在,您需要输入项目和连接详细信息:
    一个。 在“名称”字段中,您可以输入任何名称。 示例: myapp-remotedebugging
    b。 在“项目”字段中,选择要调试的应用程序源代码。
    C。 在“主机”字段中,输入运行应用程序的hostname
    d。 在“端口”字段中,输入您在步骤1中指定的端口号。 根据此示例,它将为“ 8000”。
  9. java 调用 远程spark java远程调试工具_mysql_04

  10. 图4:输入项目和连接详细信息
  11. 输入所有这些详细信息后,单击“调试”按钮。 而已。 现在您已经准备好进行远程调试。

祝您“调试愉快”。 希望那不是那么痛苦。

警告 :不要将远程调试JVM参数始终保持打开状态,因为它具有以下缺点:

  • 远程调试模式禁用了JVM对应用程序所做的一些优化,以优化性能。 所有这些优化都将丢失。
  • 远程调试打开了一个端口。 这是一种安全风险,因为任何可以访问服务器的人都可以启动远程调试。

翻译自: https://jaxenter.com/remote-debugging-java-applications-151466.html