需求:特殊情况下,我们很难在自己的机器上部署起来一个庞大的java产品,但是你又不得不调试,怎么办?
解决:
JVM支持远程调试,只需要给JVM添加一些参数就可以了
第一步,给虚拟机添加参数
以下是我们产品shell脚本的一段代码
DEBUG_OPTS
="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=
4000
,server=y,suspend=n"
javaCmd="${javaHome}/bin/java ${TC_OPTS} ${API_OPTS} ${DEBUG_OPTS
} -Xmx1500M -Xss512k -XX
:PermSize=64m -XX:MaxPermSize=128m -Dlog4j.configuration=file://${log4jPropertiesHome}/lo
g4j.properties -Djavax.net.ssl.trustStore=/etc/java/keystore -Dkrugle.api.mode=live -Djav
a.endorsed.dirs=/data/krugle/lib/endorsed -Djava.library.path=/data/krugle/lib/java-nativ
e/i386 -Dcom.sun.management.jmxremote -jar ${toolHome}/start.jar /data/krugle/conf/jetty-
krugle-hub-default.xml"
第二步,在IDE (这里是Eclipse)里配置
在Debug的dialog中,找到Remote Java Application,然后新建一个e.g.Remote Debug
然后在Connect tab中选择你的project,这里我指远程需要调试程序的源代码项目。
接下来是,Connection Type: (默认)
Connection properties:
Host: 远程服务器的IP
Port:4000