在 CentOS 上调试 Java 代码,常见方式有以下几种,按使用频率从低到高说明:
javac + java 基础调试(最原始)适合简单程序或排错。
# 编译
javac Hello.java
# 运行
java Hello
e.printStackTrace() 辅助定位jdb(JDK 自带命令行调试器)适合无图形界面服务器。
# 编译时保留调试信息
javac -g Hello.java
# 启动调试
jdb Hello
常用命令:
stop at Hello:10 # 在第10行打断点
run # 运行
step # 单步
list # 查看代码
print 变量名 # 打印变量
cont # 继续执行
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar
参数说明:
address=5005:调试端口suspend=n:启动不阻塞import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Logger log = LoggerFactory.getLogger(getClass());
log.info("value = {}", value);
配合:
tail -f app.log
# 查看 Java 进程
jps -l
# 查看堆内存
jmap -heap <pid>
# 线程栈
jstack <pid>
# 实时监控
top -p <pid>
| 场景 | 推荐方式 |
|---|---|
| 学习/练习 | jdb |
| 服务器程序 | 远程调试 |
| 生产问题 | 日志 + jstack |
| 大型项目 | IntelliJ 远程调试 |
如果你愿意,可以告诉我:
我可以给你更具体的调试步骤。