在 IntelliJ IDEA 中进行 Java 远程调试是一个非常实用的功能,尤其适合调试运行在远程服务器或容器中的 Java 应用程序。

远程服务器java进程

登录远程服务器,查看要调试的JAVA进程,ps -ef|grep java

JAVA进程启动命令中的调试参数,-Xdebug开启调试模式,-Xrunjdwp 用于加载 JDWP 调试代理,Java 调试线协议(JDWP)。

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:8418

  • transport=dt_socket:调试传输方式,TCP/IP socket(最常用,支持远程调试)
  • server=y:当前 JVM 作为调试服务器,等待调试器连接
  • suspend=n:JVM 启动后不暂停(suspend=y 表示启动后暂停,等待调试器连接后再继续)
  • address=8000:-本地调试:可简化为 5005(默认本地地址)或127.0.0.1:5005- 远程调试:需指定 IP + 端口,如 192.168.1.100:5005。

对于禁止远程访问但可以通过跳板机访问的远程服务器,可通过配置端口转发连接到远程服务器调试端口,用户名和ssh服务器为跳板机账号,登录通过后可连接。

ssh -L [本地IP:]本地端口:目标IP:目标端口 用户名@SSH服务器IP

IDEA配置远程调试

  1. 打开 IDEA,点击顶部菜单 Run -> Edit Configurations
  2. 点击左上角 + 号,选择 Remote JVM Debug
  3. 配置调试信息:
    • Name:自定义名称(如 Remote-Debug-App
    • Host:远程服务器 IP 地址或域名,如果配置了ssh转发,host和port则为本地ip(127.0.0.1)和端口
    • Port:远程调试端口(与前面设置的 address 一致,如 5005)
    • Transport:默认 Socket 即可
    • Debugger mode:默认 Attach to remote JVM
    • Use module classpath:选择和远端服务器一致的源码目录
  4. 其他保持默认,点击 Apply -> OK 保存配置
  5. 点击IDEA右上方小绿虫子就开启调试了,如果遇到Connect问题,就是连接有问题,需要确认远程服务器端口可访问。

基础

ps 查看进程状态,全称为 "process status"。如进程 ID、运行状态、占用资源等

ps --help all 查看所有options

ps -ef
以全格式显示所有进程,包含父进程 ID(PPID),适合查看进程间的父子关系。

ssh -L 是 SSH 命令中用于建立本地端口转发(Local Port Forwarding)的参数,它可以将本地计算机的某个端口流量通过 SSH 隧道转发到远程服务器

Java 调试线协议(JDWP,Java Debug Wire Protocol)是 Java 平台定义的一套跨平台、跨语言的调试协议,用于实现调试器(如 IntelliJ IDEA、Eclipse Debugger)与被调试的 Java 程序(目标 VM)之间的通信,是 Java 调试能力的核心底层支撑

更多推荐