温馨提示×

centos如何调试java程序

小樊
41
2026-09-17 22:11:12
栏目: 编程语言

在 CentOS 上调试 Java 程序,常见方式主要有命令行调试、远程调试、日志排查、性能/线程分析等。下面按使用场景给你一个实用指南。


一、基础准备

1. 确认 Java 环境

java -version
which java

推荐使用 JDK(不是 JRE),因为调试工具(jstack、jmap、jdb)在 JDK 中。


二、本地命令行调试(jdb)

适合简单程序或服务器无 GUI 环境。

编译(保留调试信息)

javac -g Hello.java

使用 jdb 调试

jdb Hello

常用命令:

  • stop at Hello:10 在第10行断点
  • run
  • step 单步
  • locals 查看变量
  • print x 打印变量
  • cont 继续执行

三、远程调试(最常用)

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

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

参数说明:

  • address=5005 调试端口
  • suspend=n 启动不阻塞(开发可用 y)

2. 本地 IDE 连接

  • IntelliJ IDEA
    • Run → Edit Configurations → Remote JVM
    • Host: CentOS IP
    • Port: 5005
  • Eclipse
    • Debug Configurations → Remote Java Application

⚠️ 注意防火墙:

firewall-cmd --add-port=5005/tcp --permanent
firewall-cmd --reload

四、查看运行状态和问题排查

1. 查看 Java 进程

jps -l

2. 线程死锁 / 卡死

jstack <pid>

重点看:

  • BLOCKED
  • WAITING
  • deadlock

3. 内存溢出(OOM)

jmap -heap <pid>
jmap -histo <pid> | head

生成堆转储:

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

用 MAT / VisualVM 分析。


五、日志调试(最实用)

1. 使用日志框架

  • log4j / logback / slf4j
  • 设置 DEBUG 级别

2. 实时查看日志

tail -f /var/log/app.log

六、图形化工具(需 X11 或本地)

1. jconsole

jconsole

2. jvisualvm

jvisualvm

可看:

  • CPU
  • 内存
  • 线程
  • 堆 dump

(CentOS 服务器通常配合 X11 转发或本地连接)


七、常见调试场景建议

场景 推荐方式
本地小测试 jdb
线上问题 远程调试 + jstack
内存问题 jmap + heap dump
性能问题 jvisualvm / async-profiler
生产环境 日志 + 远程调试(谨慎)

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

  • CentOS 版本
  • Java 版本
  • 是 Web 服务 / Spring Boot / 普通 Java 程序
  • 遇到什么具体问题(卡死 / 报错 / OOM)

我可以直接给你针对性调试命令

0