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 自带命令行调试器)
- 编译时加入调试信息: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,填写远程 Host 与 Port=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 输出仍在远程控制台;调试会增加网络延迟,按需短时开启。