温馨提示×

Debian Java代码调试有哪些方法

小樊
45
2025-12-28 14:34:00
栏目: 编程语言

Debian 上常用的 Java 调试方法

一 环境准备

  • 安装 OpenJDK 11(或你需要的版本):sudo apt update && sudo apt install openjdk-11-jdk;验证:java -version、javac -version。
  • 可选:设置环境变量(便于多版本管理),例如在 ~/.bashrc 中添加:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64;export PATH=$PATH:$JAVA_HOME/bin,然后执行 source ~/.bashrc。

二 本地调试方法

  • 使用 jdb(JDK 自带命令行调试器)
    1. 编译时加入调试信息:javac -g HelloWorld.java;2) 启动:jdb HelloWorld;3) 常用命令:stop at HelloWorld:5(行断点)、stop in YourClass.yourMethod(方法断点)、run、step、next、continue、print var
  • 使用 IDE 图形化调试(IntelliJ IDEA / Eclipse / NetBeans)
    在代码行号左侧点击设置断点,点击工具栏的“虫子”图标启动调试;常用操作:Step Over(F8)、Step Into(F7)、Step Out、Resume(F9)、Evaluate Expression 等。

三 远程调试方法

  • 启动参数启用 JDWP(推荐新语法)
    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar your-app.jar
    关键参数说明:
    • transport=dt_socket:基于套接字;server=y:JVM 作为调试服务器;suspend=n:启动不挂起;address=5005*:5005:监听端口/所有地址。
  • 兼容旧语法(部分老版本 JDK 可用)
    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -jar yourapp.jar
  • IDE 连接步骤(以 IntelliJ/Eclipse 为例)
    Run → Edit Configurations → + → Remote,填写远程 HostPort=5005,选择 Attach 后启动 Debug。
  • 服务化场景
    • Tomcat:在 CATALINA_HOME/bin/setenv.sh 中导出 JPDA_OPTS,使用 ./catalina.sh jpda start
    • Spring Boot:在 application.properties 添加 spring-boot.run.jvm-arguments=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
  • 网络与安全
    • 开放端口:sudo ufw allow 5005/tcp
    • 更安全的访问:使用 SSH 隧道:ssh -L 5005:localhost:5005 user@remote;
    • 容器场景:docker run -p 5005:5005 …;
    • 建议仅在测试环境启用远程调试,生产环境关闭。

四 附加到正在运行的 JVM

  • 获取进程号:jps;
  • 附加调试器:jdb -attach
  • 之后可在 jdb 中设置断点、查看变量、单步执行等。

五 辅助手段与最佳实践

  • 编译时加入 -g 生成调试信息,便于断点与变量查看;
  • 加强日志与诊断:添加详细日志,必要时使用 JProfiler / YourKit 做性能瓶颈分析;
  • 远程调试注意:本地与远程代码版本需一致;断点暂停会导致请求短暂卡住;远程的 System.out / log 输出仍在远程控制台;调试会增加网络延迟,按需短时开启。

0