Debian Java远程调试如何开启
导读:在 Debian 上开启 Java 远程调试 一 启用远程调试的两种方式 直接在启动命令中添加 JDWP 代理参数(最常用、最稳妥)。 若程序已运行且未启用调试,需修改启动方式并重启应用(远程调试无法热开启)。 二 启动参数与示例 推...
在 Debian 上开启 Java 远程调试
一 启用远程调试的两种方式
- 直接在启动命令中添加 JDWP 代理参数(最常用、最稳妥)。
- 若程序已运行且未启用调试,需修改启动方式并重启应用(远程调试无法热开启)。
二 启动参数与示例
- 推荐写法(绑定所有地址,便于跨主机调试): java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar your-application.jar
- 旧版或未设置好 JAVA_HOME 时,可用简写形式(部分环境支持): java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your-application.jar
- 参数说明:
- transport=dt_socket:使用 Socket 传输。
- server=y:JVM 作为调试服务器,等待调试器连接。
- suspend=n:启动后不暂停,直接运行;如需等调试器连上再启动,可设为 y。
- address=:5005 或 address=5005:监听端口为 5005;使用 “:” 可监听所有网卡,便于远程连接。
- 编译阶段建议保留调试信息(便于断点、变量查看): javac -g YourClass.java
- 命令行连接示例(使用 jdb): jdb -attach localhost:5005
- 注意:
- 端口可自定义(如 8000、9000),但需与调试端一致。
- 若提示无法绑定端口,检查端口是否被占用或权限是否足够(非 root 通常只能绑定 1024+ 端口)。
三 防火墙与网络连通
- 开放调试端口(以 UFW 为例): sudo ufw allow 5005/tcp
- 云服务器需同时放通云厂商安全组/防火墙的 5005/TCP 入站规则。
- 从本地验证连通性(在本地机器执行): nc -vz < 服务器IP> 5005
- 若服务在内网,确保路由/ACL 允许访问调试端口。
四 在 IDE 中连接远程调试
- IntelliJ IDEA
- Run/Debug Configurations → 新建 Remote JVM Debug。
- 设置 Host(服务器 IP)与 Port(如 5005)。
- 点击 Debug 启动连接。
- Eclipse
- Debug Configurations → Remote Java Application。
- 配置 Host 与 Port,点击 Debug。
- 连接成功后,即可像本地调试一样设置断点、单步、查看变量与堆栈。
五 常见问题与安全建议
- 端口被占用:更换端口或结束占用进程(如 ss -lntp | grep 5005)。
- 无法连接:核对服务器 IP、端口、监听地址(是否绑定到 0.0.0.0)、防火墙/安全组规则。
- 需要应用启动即暂停等待调试器:将 suspend=y。
- 编译无调试信息导致断点不可用:编译时加 -g。
- 安全风险:远程调试相当于开放后门,生产环境不建议长期开启;调试结束请关闭或限制来源 IP,必要时通过 SSH 隧道 转发端口(如 ssh -L 5005:localhost:5005 user@server)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Java远程调试如何开启
本文地址: https://pptw.com/jishu/762124.html
