温馨提示×

Java在Debian上的远程调试如何操作

小樊
53
2025-10-04 11:38:42
栏目: 编程语言

Java在Debian上的远程调试操作步骤

1. 准备工作:安装JDK

确保Debian系统已安装JDK(建议使用OpenJDK 11及以上版本),可通过以下命令安装并验证:

sudo apt update
sudo apt install openjdk-11-jdk
java -version  # 验证安装(需显示JDK版本信息)

2. 配置Java应用支持远程调试

在启动Java应用时,需添加JVM参数以启用远程调试。常用参数如下(以Spring Boot jar包为例):

nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar your-application.jar &

参数说明

  • transport=dt_socket:使用Socket协议进行调试通信(最常用);
  • server=y:应用作为调试服务器,等待IDE连接;
  • suspend=n:应用启动时不暂停(若设为y,则启动后会等待调试器连接后再继续执行);
  • address=*:5005:监听所有网络接口的5005端口(*表示允许远程连接,可替换为具体IP)。

3. 配置IDE(以IntelliJ IDEA为例)

通过IDE连接远程调试服务,步骤如下:

  1. 打开IntelliJ IDEA,点击顶部菜单栏 Run → Edit Configurations
  2. 点击左上角 + 号,选择 Remote JVM Debug
  3. 在右侧配置界面填写:
    • Name:自定义配置名称(如“Debian Remote Debug”);
    • Host:远程服务器的IP地址(如192.168.1.100);
    • Port:与JVM参数中address字段一致的端口号(如5005);
  4. 点击 Apply → OK 保存配置。

4. 启动远程调试会话

  1. 确保远程服务器上的Java应用已启动(且监听指定端口);
  2. 在IntelliJ IDEA中选择刚配置的远程调试配置,点击工具栏的 Debug 按钮(绿色虫子图标);
  3. 若连接成功,IDE会显示“Connected to the target VM”日志;
  4. 在本地代码中设置断点(需确保本地代码与远程服务器上的代码版本一致),通过浏览器或命令行访问远程应用,触发断点后,IDE会暂停执行,可查看变量值、调用栈等信息。

5. 注意事项

  • 代码一致性:本地代码与远程服务器上的代码必须完全一致(包括依赖库版本),否则断点可能无法命中;
  • 防火墙设置:确保远程服务器的防火墙允许调试端口的入站连接(如5005端口),可通过以下命令开放端口:
    sudo ufw allow 5005/tcp
    
  • 网络稳定性:远程调试依赖网络连接,建议在局域网内操作,避免因网络延迟影响调试效率;
  • 生产环境谨慎使用:远程调试会暴露应用内部状态,生产环境建议仅在必要时使用,使用后及时关闭调试端口。

可选:使用命令行工具(JDB)调试

若不想使用IDE,可通过Java自带的命令行调试工具jdb连接远程调试服务:

  1. 启动远程调试服务(同步骤2);
  2. 在本地终端执行以下命令连接远程服务:
    jdb -connect com.sun.jdi.SocketAttach:hostname=192.168.1.100,port=5005
    
  3. 连接成功后,使用jdb命令(如stop at MyClass:10设置断点、run启动调试、next单步执行)进行调试。

0