以下是在Debian上进行Java远程调试的关键技巧及步骤:
安装JDK
确保Debian系统安装OpenJDK(推荐11+版本):
sudo apt update && sudo apt install openjdk-11-jdk
配置防火墙
开放远程调试端口(如5005):
sudo ufw allow 5005/tcp
在启动Java应用时添加JVM参数(以独立应用为例):
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your-application.jar
transport=dt_socket:使用Socket通信。server=y:以服务器模式等待调试器连接。suspend=n:启动时不暂停,直接运行(调试用)。address=5005:监听端口(可改为*:5005监听所有IP)。编辑Tomcat的setenv.sh(位于CATALINA_HOME/bin/):
export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n"
启动时使用jpda模式:
./catalina.sh jpda start
Run → Edit Configurations → + → Remote。address一致(如5005)。Debug。Run → Debug Configurations → Remote Java Application → New。Debug。版本一致性
本地代码与远程服务器代码需完全一致,建议通过版本控制工具(如Git)同步。
网络与安全
ping或telnet测试端口连通性。性能影响
远程调试会增加网络延迟,可能影响应用性能,建议仅在必要时开启。
端口冲突
若端口被占用,可修改address参数为其他端口(如5006),并同步更新IDE配置。
SSH隧道加密(可选):
若需安全连接,可通过SSH隧道转发端口:
ssh -L 5005:localhost:5005 user@remote-server-ip
之后在IDE中连接localhost:5005即可。
容器化环境适配
若使用Docker,需在容器启动时添加调试参数,并通过-p 5005:5005映射端口到宿主机。
通过以上步骤,可快速在Debian上搭建Java远程调试环境,高效定位问题。