Java应用在Linux环境下的调试方法
在Linux下调试Java应用前,需完成基础环境配置:
sudo apt update && sudo apt install default-jdk),并通过java -version验证安装成功。javac YourClass.java生成.class文件(或打包为.jar文件)。jdb是JDK自带的命令行调试工具,适合习惯终端操作的场景:
jdb YourClass(或jdb YourJarFile.jar),进入jdb交互界面。stop in YourClass.methodName命令在指定方法(如main)设置断点,例如stop in HelloWorld.main。run命令启动程序,程序会在断点处暂停。next(或n):执行下一行代码(不进入方法内部);step(或s):进入当前行调用的方法内部;print variableName(或p variableName):查看变量的当前值(如print result);cont(或c):继续执行程序直到下一个断点或结束。IntelliJ IDEA、Eclipse等IDE提供直观的图形化调试界面,大幅提升效率:
int result = divide(10, 0))。Run -> Edit Configurations,点击+选择Remote,填写Host(服务器IP)、Port(如5005),点击OK。Run -> Debug Configurations,选择Remote Java Application,填写Port和Host,点击Apply。Debug按钮(绿色虫子图标),程序会在断点处暂停。此时可查看变量值、调用栈,或使用Step Over(F8)、Step Into(F7)等按钮控制执行流程。当Java应用运行在Linux服务器上时,需通过远程调试连接:
startup.sh)中添加JVM参数,启用远程调试:java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:5005 -jar your-application.jar
参数说明:
transport=dt_socket:使用socket传输;server=y:JVM作为调试服务器;suspend=n:不暂停JVM等待调试器(若设为y,则启动时会暂停,直到IDE连接);address=*:5005:监听所有IP的5005端口。netstat -tulnp | grep 5005验证)。Debug即可连接服务器上的Java进程,进行远程调试。java.util.logging、Log4j或SLF4J记录程序运行状态,在调试时查看日志文件(如logs/app.log),定位问题。Monitor标签查看堆内存使用)。top(查看CPU使用率)、htop(增强版top)、free -h(查看内存使用)等命令,监控Linux系统的资源占用,辅助判断应用性能问题。