温馨提示×

Java在Ubuntu上如何进行远程调试

小樊
60
2025-10-05 19:40:04
栏目: 编程语言

Java在Ubuntu上进行远程调试的完整步骤

1. 准备工作:安装JDK并验证环境

确保Ubuntu系统已安装Java Development Kit (JDK)(建议使用OpenJDK 8及以上版本),并通过以下命令验证安装:

sudo apt update
sudo apt install openjdk-11-jdk  # 或default-jdk(自动适配版本)
java -version  # 确认输出包含JDK版本信息

若未配置JAVA_HOME环境变量,可通过编辑~/.bashrc文件添加:

echo "export JAVA_HOME=/usr/lib/jvm/default-java" >> ~/.bashrc
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc

2. 启动Java应用并开启远程调试

在启动Java应用时,需添加**JDWP(Java Debug Wire Protocol)**参数以启用远程调试。常用参数组合如下:

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:监听所有网络接口的5005端口(可替换为其他端口,如*:8000)。

3. 配置Ubuntu防火墙允许调试端口

若Ubuntu启用了ufw防火墙,需放行调试端口(以5005为例):

sudo ufw allow 5005/tcp  # 允许TCP协议的5005端口
sudo ufw reload          # 重新加载防火墙规则

4. 本地IDE配置远程调试(以IntelliJ IDEA为例)

  1. 打开IntelliJ IDEA,进入Run → Edit Configurations
  2. 点击左上角**+号,选择Remote JVM Debug**;
  3. 配置远程连接信息:
    • Name:自定义配置名称(如“Ubuntu Remote Debug”);
    • Host:远程Ubuntu服务器的IP地址(如192.168.1.100);
    • Port:与启动应用时指定的address端口一致(如5005);
  4. 点击Apply → OK保存配置。

5. 启动远程调试会话

  1. 确保远程Ubuntu上的Java应用已启动(并监听指定端口);
  2. 在IntelliJ IDEA中选择刚创建的远程调试配置,点击工具栏的Debug按钮(绿色虫子图标);
  3. 调试会话启动后,IDE会连接到远程JVM,此时可在代码中设置断点、查看变量、单步执行等。

6. 可选:使用命令行工具jdb调试

若偏好命令行,可使用JDK自带的jdb工具连接远程调试:

jdb -attach 192.168.1.100:5005  # 替换为远程IP和端口

连接后,可通过stop at设置断点、run启动程序、print查看变量等命令进行调试。

注意事项

  • 代码一致性:本地代码需与远程服务器上的代码版本一致,避免断点位置偏差;
  • 网络连通性:确保本地机器与远程Ubuntu服务器之间的网络通畅(可通过ping命令验证);
  • 生产环境慎用:远程调试会增加网络开销,且可能暴露敏感信息,建议仅在开发/测试环境使用;
  • 端口冲突:若5005端口已被占用,可更换为其他未被使用的端口(如50068000)。

0