之前有介绍用Eclipse远程调试JAVA程序,见Eclipse远程调试JAVA程序,但现场JAVA程序出现异常,又不能在现场真实环境装Eclipse来调试,所幸有JDB这个工具。此工具的常规用法不介绍了,网上教程很多。本文记录利用JDB附加到以调试模式运行的JAVA程序,JAVA程序能正常工作,出现问题后,可以利用JDB附加上去调试。
首先用以下命令启动JAVA程序:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
注意命令中有参数suspend=n,指定JAVA以调试模式运行,监听本地8000端口,并且等待连接时不挂起,正常运行。
在适当的时候用以下命令附加到上面运行的JAVA程序,用以调试分析:
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8000
之后就可以用threads、thread、where、list等命令开始调试了。