有一个问题要特别注意:如果你在Eclipse里面配置好了Tomcat,然后以debug模式启动程序,那么Eclipse就自动的给该Tomcat的JVM配置好了调试的参数,你就不需要配置,如果配置了会得到异常:ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
两种方式进行远程调试
Socket Listen方式:服务器端的JVM主动链接Eclipse调试器
Socket Attach方式:服务器端的JVM正常启动,只是开启了监听器, 允许Eclipse调试器来连接.
个人喜欢第2中方式,服务器端JVM的启动参数配置:
[color=green]-agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...[/color]
或者
[color=green]-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...[/color]
JDK5及其后继者使用-agentlib方式,
详细参数细节请参考:[url]http://docs.oracle.com/javase/6/docs/technotes/guides/jpda/conninv.html#JDB[/url]
案例:
windows下配置环境变量CATALINA_OPTS为
[b][color=red]-Xdebug -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n[/color][/b]
Eclipse端配置一个Remote Java Application的debug configuration即可,使用Standard(Socket Attach)方式
更详细的参考文章:[url]http://skzr-org.iteye.com/blog/835331[/url]
两种方式进行远程调试
Socket Listen方式:服务器端的JVM主动链接Eclipse调试器
Socket Attach方式:服务器端的JVM正常启动,只是开启了监听器, 允许Eclipse调试器来连接.
个人喜欢第2中方式,服务器端JVM的启动参数配置:
[color=green]-agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...[/color]
或者
[color=green]-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...[/color]
JDK5及其后继者使用-agentlib方式,
详细参数细节请参考:[url]http://docs.oracle.com/javase/6/docs/technotes/guides/jpda/conninv.html#JDB[/url]
案例:
windows下配置环境变量CATALINA_OPTS为
[b][color=red]-Xdebug -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n[/color][/b]
Eclipse端配置一个Remote Java Application的debug configuration即可,使用Standard(Socket Attach)方式
更详细的参考文章:[url]http://skzr-org.iteye.com/blog/835331[/url]