温馨提示×

linux java如何调试程序

小樊
47
2026-10-12 14:56:30
栏目: 编程语言

在 Linux 下调试 Java 程序,常见方式有以下几种,从最常用到高级依次说明:


一、使用 IDE 远程/本地调试(最推荐)

1. 本地调试(IntelliJ IDEA / Eclipse)

  • 在 Linux 上直接用 IDE 打开项目
  • 设置断点
  • 直接 Run / Debug

适合:开发环境


2. 远程调试(生产或服务器程序)

(1)启动 Java 程序时开启调试端口

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 \
     -jar yourapp.jar

参数说明:

  • address=5005:调试端口
  • suspend=n:启动时不暂停(n 改为 y 可等调试器连接)

(2)IDE 配置 Remote Debug

  • IDEA:Run → Edit Configurations → Remote JVM Debug
  • 填服务器 IP 和 5005 端口
  • 打上断点即可调试

⚠️ 注意:

  • 防火墙要放行端口
  • 生产环境调试需谨慎

二、使用命令行调试工具(无 IDE)

1. jdb(JDK 自带)

jdb -attach 5005

或

jdb YourMainClass

常用命令:

stop at com.xxx.Main:20
run
step
next
print var

适合:简单调试、无 GUI 环境


2. 查看运行状态(排错常用)

(1)查看 Java 进程

jps -l

(2)查看线程堆栈

jstack <pid>

(3)查看内存

jmap -heap <pid>
jmap -histo <pid>

(4)实时监控

jstat -gc <pid> 1000

三、日志调试(最实用)

private static final Logger log = LoggerFactory.getLogger(Xxx.class);
log.info("value = {}", value);

配合:

tail -f app.log

四、异常和 Core Dump 分析

1. 生成 heap dump

jmap -dump:live,format=b,file=heap.hprof <pid>

2. 使用工具分析

  • Eclipse MAT
  • VisualVM
  • jhat(老)

五、常见调试场景建议

场景 推荐方式
开发阶段 IDE 本地调试
服务器程序 远程 Debug
卡死 / 死锁 jstack
内存溢出 jmap + MAT
无界面服务器 jdb + 日志

如果你愿意,可以告诉我:

  • 是 开发环境还是服务器
  • 用的是 Spring / 普通 Java / 微服务
  • 是 卡死 / 报错 / 逻辑不对

我可以给你更具体的调试步骤。

0 踩