Ubuntu Java代码调试技巧
在Ubuntu上调试Java代码前,需完成两项基础配置:
sudo apt update && sudo apt install openjdk-17-jdk(以OpenJDK 17为例)安装JDK,安装后用java -version和javac -version验证是否成功。-g参数(如javac -g YourClassName.java),确保生成的.class文件包含变量名、行号等调试信息,否则调试工具无法准确定位代码位置。main方法,选择Debug '类名.main()',或点击工具栏绿色虫子图标。i == 5),仅在满足条件时暂停。Step Into(进入方法内部)、Step Over(跳过方法)、Step Return(跳出当前方法)控制执行流程;通过Variables面板查看变量值,或选中变量按Ctrl+Shift+D计算表达式。Debug As -> Java Application。Breakpoints视图+号,选择Java Exception Breakpoint,输入异常类型(如NullPointerException),程序遇到该异常时会自动暂停。Toggle Watchpoint,当变量被访问或修改时暂停程序,适合监控关键变量变化。jdb YourClassName(需提前编译并包含调试信息)。stop at YourClassName:行号(如stop at YourClassName:10)。run启动程序,step单步进入方法,next单步跳过方法,continue继续执行至下一个断点。print 变量名(如print sum)查看变量值,locals查看当前帧所有局部变量,where查看当前线程堆栈跟踪。jps:查看当前运行的Java进程(如jps -l),获取进程ID以便后续调试。jstack:生成线程快照(如jstack 进程ID),分析线程死锁、阻塞等问题。-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005(5005为监听端口,可自定义)。Run -> Edit Configurations,添加Remote配置,填写服务端Host(如192.168.1.100)和Port(5005),点击OK后启动调试即可连接远程程序。More -> Condition,输入布尔表达式(如list.size() > 10),仅当条件满足时暂停,减少不必要的调试步骤,提升效率。Toggle Watchpoint,当变量被读取或修改时程序暂停,适合监控关键数据的变化(如全局变量、共享资源)。Ctrl+Shift+D(IntelliJ IDEA)或Ctrl+Shift+I(Eclipse)快速查看变量值;在调试控制台中直接输入变量名 = 新值(如sum = 100),修改变量值以测试不同场景下的程序行为。logger.debug("Current value of i: {}", i)),运行程序后将日志输出到文件(如log4j.appender.FILE.File=/var/log/myapp.log),通过查看日志定位问题(如异常堆栈、变量状态)。sudo apt install visualvm安装VisualVM,连接到目标Java进程(localhost:1099或远程主机的JMX端口),监控CPU使用率、内存占用、线程状态等指标,辅助分析性能瓶颈(如内存泄漏、线程阻塞)。