在 IntelliJ IDEA 中配置远程调试,可以让你调试运行在远程服务器上的 Java 应用程序。以下是详细步骤:
远程服务器配置
- 启用远程调试 JVM 参数 在远程服务器运行的 Java 应用程序中添加调试参数。常见的参数如下:
-
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
transport=dt_socket
:使用套接字进行通信。
server=y
:表示当前 JVM 作为调试服务端。
suspend=n
:n
表示应用启动时不暂停;y
表示启动时暂停等待调试连接。
address=5005
:设置调试端口为 5005(可以自定义)。
- 假设你的应用启动命令如下:
java -jar myapp.jar
- 添加调试参数后:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar myapp.jar
-
- 确保服务器防火墙允许调试端口 检查服务器的防火墙规则,确保调试端口(如
5005
)对调试机器开放。
IDEA 配置远程调试
- 打开 Debug 配置窗口
- 点击 IDEA 右上角的 Run/Debug Configurations。
- 点击左上角的
+
,选择 Remote JVM Debug。
- 设置远程调试参数 填写以下字段:
- Name:配置名称,例如
Remote Debug
. - Host:远程服务器的 IP 地址或域名。
- Port:远程服务器调试端口(如
5005
)。 - Use module classpath:选择对应项目模块。
- Name:配置名称,例如
- 保存配置 点击 OK 保存配置。
启动远程调试
- 在远程服务器启动应用 确保应用已经以调试模式启动(带有调试参数)。
- 启动 IDEA 的调试
- 在 IDEA 中选择刚创建的调试配置。
- 点击 Debug 按钮,IDEA 会尝试连接远程服务器。
- 设置断点 你可以在本地代码中设置断点。程序运行到对应代码时会暂停,方便调试。
常见问题排查
- 连接失败
- 检查服务器的调试端口是否开放。
- 检查防火墙配置。
- 确保本地和远程网络连通。
- 代码不匹配
- 确保本地代码与远程运行的代码版本一致(包括源码、依赖)。
- 端口被占用
- 如果调试端口(如
5005
)被占用,可以更换端口并重新配置。
- 如果调试端口(如
附加提示
- 动态 Attach 调试:如果你无法修改启动命令,可以使用
-XX:OnOutOfMemoryError
或jcmd
工具动态加载调试代理。 - IDEA 和远程服务器时间同步:调试断点时,时间不同步可能导致异常行为。
按照以上步骤配置后,即可成功使用 IDEA 调试远程服务器上的应用程序!