温馨提示×

CentOS编译Java如何调试代码

小樊
33
2026-08-19 17:51:16
栏目: 编程语言

CentOS 上编译并调试 Java 代码,通常分为 编译、运行、调试 三个阶段。下面按常见场景给你一套完整、实用的做法。


一、环境准备(CentOS)

1. 安装 JDK(推荐 JDK 8 / 11 / 17)

# 查看是否已安装
java -version

# 如果没有,安装 OpenJDK
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

调试 必须安装 devel 包(包含 jdb 等工具)


二、编译 Java 代码

1. 编写示例程序

// Hello.java
public class Hello {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = add(a, b);
        System.out.println(c);
    }

    public static int add(int x, int y) {
        return x + y;
    }
}

2. 编译(带调试信息)

javac -g Hello.java

-g 参数非常重要,会生成:

  • 局部变量表
  • 行号信息
  • 源文件信息

否则调试时看不到变量和行号。


三、使用 JDB 调试(命令行调试)

JDB 是 JDK 自带的命令行调试器,适合服务器环境。

1. 启动调试

jdb Hello

或使用:

jdb -classpath . Hello

2. 常用 JDB 调试命令

设置断点

stop at Hello:5

或方法断点:

stop in Hello.add

运行程序

run

单步执行

step        # 进入方法
next        # 不进入方法

查看变量

print a
locals

继续执行

cont

查看堆栈

where

3. 示例调试流程

$ jdb Hello
> stop at Hello:5
> run
> print a
> next
> step
> cont

四、远程调试(生产环境常用 ✅)

如果你在 CentOS 上运行 Java 程序,想在本地或服务器上调试:

1. 以调试模式启动 Java

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 Hello

参数说明:

参数 含义
suspend=y 启动后暂停,等待调试器
address=5005 调试端口
server=y 作为调试服务器

2. 使用 JDB 连接远程调试

jdb -attach 5005

3. 使用 IDE 远程调试(推荐)

IntelliJ IDEA

  1. 添加 Remote JVM Debug
  2. Host:CentOS IP
  3. Port:5005
  4. 启动调试

✅ 这是企业中最常用的调试方式


五、调试技巧(非常重要)

1. 编译时一定要加 -g

javac -g *.java

2. 查看 JVM 进程

jps

3. 查看线程堆栈

jstack <pid>

4. 查看内存

jmap -histo <pid>

六、常见问题

Q1:找不到 jdb?

sudo yum install java-1.8.0-openjdk-devel

Q2:调试时看不到变量?

✅ 忘记加 -g

Q3:生产环境能调试吗?

✅ 可以用远程调试,但 不要 suspend=y 在线上


七、总结(推荐方案)

场景 推荐方式
本地调试 javac -g + jdb
服务器调试 远程调试(IDE)
线上问题 jstack / jmap + 日志

如果你愿意,我可以:

  • ✅ 给你 完整远程调试示例
  • ✅ 针对 Spring Boot / Tomcat 项目
  • ✅ 教你 IDEA 连接 CentOS 调试

你现在用的是 普通 Java 项目还是 Web 项目?

0