ubuntu

Java编译Ubuntu下如何调试

小樊
45
2025-08-29 18:26:44
栏目: 编程语言

Java编译后在Ubuntu下的调试方法

一、前置准备:安装JDK并配置环境变量

在Ubuntu上调试Java程序前,需确保已安装JDK并正确配置环境变量。以OpenJDK 11为例,操作步骤如下:

  1. 安装JDK:打开终端,执行sudo apt update && sudo apt install openjdk-11-jdk,安装完成后通过java -version验证安装是否成功。
  2. 配置环境变量:编辑~/.bashrc文件(或/etc/environment),添加以下内容:
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64  # 替换为实际Java版本路径
    export PATH=$JAVA_HOME/bin:$PATH
    
    保存后执行source ~/.bashrc使配置生效。

二、使用命令行工具jdb调试(适合习惯终端的用户)

jdb是JDK自带的命令行调试工具,无需安装额外软件,适合熟悉命令行的开发者。

  1. 编译时包含调试信息:使用-g选项编译Java文件,确保生成的字节码包含变量名、行号等调试信息。例如:
    javac -g HelloWorld.java
    
  2. 启动jdb并附加到进程
    • 直接调试类文件:jdb HelloWorld(适用于未打包的类)。
    • 调试已运行的Java进程:先通过jps命令查看进程ID(如12345),再执行jdb -attach 12345
  3. 常用调试命令
    • stop at HelloWorld:7:在第7行设置断点(将HelloWorld替换为类名,7替换为行号)。
    • run:启动程序,程序会在断点处暂停。
    • next(或n):执行下一行代码(不进入方法内部)。
    • step(或s):进入当前行调用的方法内部。
    • print variableName(或p variableName):查看变量的当前值(如print sum)。
    • continue(或c):继续执行程序直到下一个断点或程序结束。

三、使用集成开发环境(IDE)调试(推荐新手/团队协作)

IDE(如IntelliJ IDEA、Eclipse)提供图形化界面,大幅简化调试流程,适合大多数开发者。

1. IntelliJ IDEA调试步骤

2. Eclipse调试步骤

四、远程调试(适合调试服务器端程序)

若Java程序运行在远程Ubuntu服务器上,可通过远程调试功能连接本地IDE进行调试。

  1. 启动远程Java程序:在服务器上启动Java程序时,添加以下JVM参数(以端口5005为例):
    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -jar myapp.jar
    
    • server=y:表示服务器等待调试器连接。
    • suspend=y:表示程序启动后会暂停,等待调试器连接后再继续(若不想暂停,可设置为n)。
  2. IDE配置远程调试
    • IntelliJ IDEA:点击Run -> Edit Configurations,点击+号选择Remote JVM Debug,设置Host(服务器IP地址)、Port(如5005),点击Apply后点击Debug
    • Eclipse:点击Run -> Debug Configurations,双击Remote Java Application,设置HostPort,点击Debug
  3. 开始调试:连接成功后,IDE会同步远程程序的状态,可像本地调试一样设置断点、查看变量。

五、辅助调试工具

  1. 日志分析:使用Log4j、SLF4J等日志框架记录程序运行信息,在log4j.propertieslogback.xml中配置日志级别(如DEBUG),通过日志输出定位问题。
  2. 线程分析:使用jstack命令生成线程快照,查看线程堆栈信息(如死锁、线程阻塞),命令格式为jstack <pid>pid为Java进程ID,可通过jps查看)。
  3. 性能分析:使用VisualVM(基于NetBeans平台)监控程序的CPU、内存、线程使用情况,帮助诊断性能瓶颈。

0
看了该问题的人还看了