jvm远程调试

实例java_opts:

export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms512m-Xmx512m  -XX:PermSize=256m-XX:MaxPermSize=256m -verbose:gc -Xloggc:/export/home/tomcat/logs/oss.play.360buy.net/appstore_oss_gc.log-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC-XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError-Dfile.encoding="GBK"-Djava.awt.headless=true-Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000-Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300-Dsun.net.inetaddr.ttl=300 -server -Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,address=8090,server=y,suspend=n"

 

 

JAVA的远程调试方法- -

Tag JAVA    DEBUG    REMOTE                                         

首先,JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDBJDB也是一个字符界面的调试环境,并支持设置断点,支持线程线级的调试。

 

JAVA的调试方法如下:

1。首先支持JVM,并设置参数,使之工作在DEBUG模式下,加入参数:-Xdebug-Xrunjdwp,transport=dt_socket,server=y,address=5432,suspend=n,onthrow=java.io.IOException,launch=/sbin/echo

其中,-Xdebug是通知JVM工作在DEBUG模式下,-Xrunjdwp是通知JVM使用(javadebug wire protocol)来运行调试环境。该参数同时了一系列的调试选项:

transport指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台。

server参数是指是否支持在server模式的VM.

onthrow指明,当产生该类型的Exception时,JVM就会中断下来,进行调式。该参数可选。

launch指明,当JVM被中断下来时,执行的可执行程序。该参数可选

suspend指明,是否在调试客户端建立起来后,再执行JVM

onuncaught(=yn)指明出现uncaught exception 后,是否中断JVM的执行.

 

2。启动调试工具。

最简单的调试工具就是上面提到的JDB,以上述调试用JVM为例,可以用下面的命运行启动JDB

jdb-connect com.sun.jdi.SocketAttach:port=5432,hostname=192.168.11.213

另外,还有好多的可视化调试工具,如eclipse,jsawt等等。Eclipses可用 ant debug来建立一个调试方法。

 

 

其实就是使用了JDK的JPDA,在启动服务器(Jboss或者Tomcat等)的命令行参数里面加上:

-Xdebug-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

 

 

Java远程调试

-Xdebug-Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,address=3999,suspend=n

-XDebug              启用调试。

-Xnoagent            禁用默认sun.tools.debug调试器。

-Djava.compiler=NONE  禁止 JIT 编译器的加载。

-Xrunjdwp            加载JDWPJPDA参考执行实例。

transport            用于在调试程序和 VM 使用的进程之间通讯。

dt_socket            套接字传输。

dt_shmem             共享内存传输,仅限于 Windows

server=y/n           VM 是否需要作为调试服务器执行。

address=3999          调试服务器的端口号,客户端用来连接服务器的端口号。

suspend=y/n          是否在调试客户端建立连接之后启动 VM

Resin:

RESIN_HOME\bin\httpd.exe-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n

Tomcat:

catalina.sh/bat 的最上面加上:SETCATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 即可。

Weblogic:

startWebLogic.bat加上:setJAVA_OPTIONS=-Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

启动App server后,在ide下通过debugremote java application并侦听相应的debug端口

EclipseRcp:

java-Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=8000 -cpF:/rcp/plugins/org.eclipse.equinox.launcher_1.0.0.v20070606.jarorg.eclipse.equinox.launcher.Main -application rcp.application -dataF:/rcp/workspace -os win32 -ws win32 -arch x86 -nl en_US

-Xdebug -Xnoagent等参数需要放在main class前面

http://dn.codegear.com/cn/article/33654

http://www.eclipsezone.com/eclipse/forums/t53459.html

http://articles.techrepublic.com.com/5100-10878_11-6139512.html

http://www.lifevv.com/tenyo/doc/20070918003423784.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值