温馨提示×

Ubuntu Java编译时如何进行代码调试

小樊
33
2025-11-26 19:57:32
栏目: 编程语言

Ubuntu下Java编译与调试实操指南

一 环境准备与编译要点

  • 安装JDK:sudo apt update && sudo apt install default-jdk;验证版本:java -version、javac -version。建议选择与项目匹配的 JDK 8/11/17/21 等LTS版本。
  • 编译时建议生成调试信息:javac -g YourClass.java,便于断点、变量查看与栈追踪。
  • 如使用构建工具:Maven/Gradle默认会携带调试信息;若需远程调试,后续启动参数需开启调试代理。

二 在IDE中调试

  • IntelliJ IDEA:创建/导入项目 → 在代码行号左侧点下断点 → 右键选择 Debug ‘类名.main()’ → 使用 Step Over/Into/Return、观察变量与调用栈。
  • Eclipse:新建 Java Project → 在行号左侧设置断点 → 右键 Debug As → Java Application → 使用单步与变量视图排查。
  • NetBeans:新建 Java Application → 设断点 → 右键 Debug File 或在工具栏 Debug 启动。
  • VS Code:安装 Java 扩展包(Language Support、Debugger for Java 等)→ 配置 launch.json 的调试类型(如 java)→ F5 启动。

三 命令行调试 jdb

  • 编译:javac -g HelloWorld.java
  • 启动:jdb HelloWorld
  • 常用命令:
    • 断点:stop in HelloWorld.main 或 stop at HelloWorld:7
    • 运行:run
    • 单步:step / next
    • 打印:print a、print b
    • 继续:cont
  • 适用场景:服务器无图形界面、快速验证问题、学习JVM调试命令。

四 远程调试与附加到进程

  • 服务端启动参数(示例端口 5005):
    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your-app.jar
    如需先挂起等待调试器连接:将 suspend 设为 y
  • 客户端连接:
    • IDE:创建 Remote JVM Debug 配置,Host 填服务器IP,Port 填 5005,启动即可附加。
    • jdb:jdb -attach server_ip:5005
  • 适用场景:调试容器/云主机上的Java进程、无法在目标机直接使用IDE的情况。

五 进阶排错工具与技巧

  • 线程与死锁:jps 查进程PID → jstack 导出线程快照,定位阻塞与死锁。
  • GC与内存:jstat -gcutil 1000 观察GC频率;必要时用 jmap 导出堆转储进一步分析。
  • 日志与异常栈:结合日志框架(如 SLF4J+Logback)输出关键路径日志;发生异常时从栈顶向下定位首个业务相关帧。
  • IDE高级断点:条件断点、异常断点、监视点可显著提升定位效率。
  • 性能分析:使用 Java Mission Control(JMC) 进行CPU采样、内存分析与事件监控。

0