仅在测试或生产服务器上可能不会发生任何问题。 在本地计算机上可能无法复制。 在这种情况下,您希望将IDE连接到远程测试(或生产)服务器并进行远程调试。
可以通过以下两个简单步骤对Java应用程序进行远程调试:
- 将远程调试参数传递给JVM。
- 配置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_socket
或shmem
。dt_socket
指示套接字接口。shmem
将通过共享内存区域指示应用程序和调试器接口,这仅在应用程序和调试器都在同一台计算机上运行时才有用。 -
address
:应用程序将打开该端口以进行远程调试。 -
suspend
:它可以有两个值。y
表示应用程序将被挂起,直到将任何远程调试器连接到该应用程序为止。n
表示即使没有远程调试器连接到应用程序,应用程序也不会被挂起。
还请参见:
步骤2:配置IDE
以下是配置Eclipse IDE以连接到远程应用程序的步骤:
- 单击调试菜单图标。
图1:单击“调试”菜单图标
- 单击“调试配置...”菜单项。
- 在左侧面板中,选择“远程Java应用程序”。
图2:选择“远程Java应用程序”
- 按下“新建”按钮。
图3:单击“新建”按钮
- 现在,您需要输入项目和连接详细信息:
一个。 在“名称”字段中,您可以输入任何名称。 示例:myapp-remotedebugging
。
b。 在“项目”字段中,选择要调试的应用程序源代码。
C。 在“主机”字段中,输入运行应用程序的hostname
。
d。 在“端口”字段中,输入您在步骤1中指定的端口号。 根据此示例,它将为“ 8000”。图4:输入项目和连接详细信息
- 输入所有这些详细信息后,单击“调试”按钮。 而已。 现在您已经准备好进行远程调试。
祝您“调试愉快”。 希望那不是那么痛苦。
警告 :不要将远程调试JVM参数始终保持打开状态,因为它具有以下缺点:
- 远程调试模式禁用了JVM对应用程序所做的一些优化,以优化性能。 所有这些优化都将丢失。
- 远程调试打开了一个端口。 这是一种安全风险,因为任何可以访问服务器的人都可以启动远程调试。
翻译自: https://jaxenter.com/remote-debugging-java-applications-151466.html