第一步:配置服务器端 (Linux)

  1. 启动 Java 程序时增加一组特定的 JVM 参数:
# 推荐写法(适用于 JDK 9 及以上)
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

# 如果是 JDK 8 或更早版本
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

参数详解:

  • transport=dt_socket:使用套接字传输。
  • server=y:作为服务器端等待调试器连接。
  • suspend=n:启动时不挂起。如果设为 y,程序会停在第一行代码等 IDEA 连接后才继续运行(适用于调试启动阶段的 Bug)。
  • address=:5005:监听 5005 端口。: 表示允许任何 IP 连接(生产环境请注意安全)。
  1. 开放防火墙:
    确保服务器的防火墙(如 iptables 或 firewalld)以及云平台的“安全组”开放了该端口(示例中为 5005)。

第二步:配置本地 IDEA (Windows)

  1. 创建一个远程调试配置:
    在这里插入图片描述
  • Host: 填入 Linux 服务器的公网或内网 IP。
  • Port: 填入刚才在服务器启动命令中指定的端口(如 5005)。
  • Use module classpath: 选择你当前要调试的项目模块。

核心注意事项

  1. 代码一致性:本地源码必须与服务器上运行的代码完全一致(包括版本和编译后的字节码)。如果代码不一致,断点会跳行或无法进入。

  2. 性能影响:调试模式会对性能有轻微影响,且如果断点被触发,服务器上的线程会停住。千万不要在生产环境的高并发流量期间长时间断点。

  3. 连接失败检查清单

    • 服务器端口是否被占用?(netstat -tunlp | grep 5005)
    • 安全组/防火墙是否放行?
    • 如果是云服务器,注意公网 IP 映射问题。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐