冯川
发布于 2023-04-27 / 1 阅读 / 0 评论 / 0 点赞

Idea远程调试

Idea远程调试

概述

原理:本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。

被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。

调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。

设置

Idea中指定debug服务器

· 点击主窗口菜单 Run / Edit Configurations,打开“Run/Debug Configurations”窗口;

· 点击工具栏上的“+”按钮,下拉菜单中选择“Remote”;

· 设置 Host 为远程服务器的域名或IP,保持 Port=5005 无需调整;

· 复制命令行参数,形如 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

图片1.png 

远程服务开启debug服务

对于SpringBoot

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar provider-0.0.1-SNAPSHOT.jar --server.port=10080

对于Tomcat

# 启动脚本中添加选项
JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

开放服务器防火墙端口

开始debug

· 要求:双方代码一致,否则远程调试无法启动;

· Connected to the target VM, address: '82.157.188.148:5005', transport: 'socket';

· 本地 IDEA 代码中设置断点;

· 浏览器或手机 HTTP 访问服务器;

· IDEA 即可在断点暂停并跟踪;

关闭debug

服务器上多开放个端口是不安全的,调试完毕后可恢复防火墙设置。

而 Java 服务器开启 Debug 服务器的功能可以保留,以便之后再次调试


评论