Ubuntu Java调试如何操作
小樊
36
2026-01-01 00:23:46
Ubuntu 上 Java 调试实操指南
一 环境准备与快速自检
- 安装 JDK(推荐 OpenJDK 11/17/21):sudo apt update && sudo apt install default-jdk
- 版本校验:java -version、javac -version 均应返回有效版本号
- 环境变量(可选,便于多版本管理):在 ~/.bashrc 或 /etc/environment 中设置
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- export PATH=$JAVA_HOME/bin:$PATH
- 使配置生效:source ~/.bashrc
以上确保具备编译与调试所需工具链与路径。
二 本地命令行调试 JDB
- 编译时保留调试信息:javac -g HelloWorld.java
- 启动调试器:jdb HelloWorld
- 常用命令:
- 断点:stop in HelloWorld.main 或 stop at HelloWorld.java:10
- 运行/继续:run、cont
- 单步:step(步入)、next(步过)
- 打印与栈:print var、locals、stack
- 小示例(触发除零异常便于练习断点与栈查看):
- 代码:在 main 中 int x = 10/0;
- 调试:在 jdb 中设断点后 run,异常处停住,用 stack/print 定位问题
以上流程覆盖命令行断点、单步、变量与栈查看等核心能力。
三 IDE 图形化调试
- IntelliJ IDEA / Eclipse / VS Code(安装 Java 扩展)均可图形化调试
- 基本步骤:
- 在代码行号左侧单击设断点
- 以 Debug 模式运行(IDE 工具栏 Debug 或快捷键)
- 使用变量/表达式观察窗口、调用栈视图进行单步与步入/步过
- 适用场景:业务代码逻辑复杂、需要可视化观察对象状态与调用路径时更高效。
四 远程调试与线上问题定位
- 服务启动时开启调试端口(示例):
- java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar
- 旧参数形式(已不推荐但仍可用):-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
- 本地 IDE 新建远程调试配置:Host 填服务器 IP,Port 填 5005,附加后可在断点处调试
- 适用:排查生产/测试环境问题、无法本地复现的缺陷。
五 运行期诊断与常见问题排查
- 进程与线程:
- 查进程:jps -l
- 线程栈:jstack (定位死锁、阻塞、异常线程)
- GC 与内存:
- GC 概况:jstat -gcutil 1000(每秒采样,关注 Full GC 次数与耗时)
- 堆转储:jmap -dump:format=b,file=heap.hprof ,再用 MAT/VisualVM 分析
- 系统层面:
- 资源监控:top/htop -p $(pgrep -f app.jar)
- 系统调用追踪:strace -f -o trace.log java -jar app.jar(定位文件/网络/权限等系统层问题)
- 常见问题速解:
- 版本/类路径:java -version、javac -version 校验;编译与运行确保 classpath 包含依赖 JAR
- 日志与输出:检查应用与容器(如 Tomcat)日志,必要时提升日志级别
以上手段覆盖线程、内存、GC、系统调用与版本/依赖等高频问题定位路径。