eclipse+maven+tomcat/jetty进行远程调试

首先,maven debug配置,请参看:http://maven.apache.org/surefire/maven-surefire-plugin/examples/debugging.html

下面,请看我的实际操作:


一、以tomcat作为容器

以tomcat容器为例,其配置方式有3种:

首先,maven项目的pom.xml文件中,在<build>的<plugins>下边应该配置tomcat7-maven-plugin插件,如下:

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- http port -->
<port>8080</port>
<!-- application path always starts with / -->
<path>/test</path>
</configuration>
</plugin>


(1)方式一

a.  打开cmd命令行,在Maven命令执行前加入一行参数:


export MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y


以上内容可以在maven的安装目录的bin\mavenDebug.bat文件中找到。(搜索debug即可)


下面是命令的详细解释:

-XDebug 启用调试
-Xrunjdwp 加载JDWP的JPDA参考执行实例。
transport  用于在调试程序和 VM 使用的进程之间通讯。
dt_socket 套接字传输。
server=y/n VM是否需要作为调试服务器执行。
address=8787调试服务器监听的端口号。
suspend=y/n 是否在调试客户端建立连接之后启动 VM 。如果设置为y,它会阻塞程序运行,直到有客户端连接到对应的监听端口(这里是8787),程序才真正开始执行。我们有时候会抱怨程序一闪而过,还没来得及在本地加载上代码程序就执行完了,这种情况就可以使用suspend参数。


注意事项:


如果你是执行的jar来运行程序,

-jar参数不能写到-Xug参数前,像这样无法启用调试:
java -jar lib/Main.jar -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=y

要远程调试maven2启动的程序,例如mvn jetty:run,可以在启动程序时执行命令:export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y"




如果是在Windows环境下,则是:


set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

此时在某个由Maven管理的工程下执行mvn指令,将会使mvn进入远程调试状态,开通我们配置的侦听端口号8787:

b. 执行命令 mvn tomcat7:run,如下图所示以mavenDebug工程为例:


然后我们就可以使用Eclipse对mvn进行调试了,

c. 打开IDE,进行如下配置:

鼠标选中你要调试的maven项目的pom.xml文件,右键,选择“Debug As”---->"Debug Configuritaions...",弹出一个窗口,在窗口的左边栏,往下拉一下,你可以看到“Remote Java Application”,选择它,右键,“New”,窗口右边将出现一些需要输入的框,按照下图填入相应的值即可:


输入值完成后,点“Debug”按钮即可。

命令行就会出现日志啦,直到看到日志最后一行出现信息: Starting ProtocolHandler ["http-bio-8080"],接下来你就可以用8080端口去访问你的应用了,而8787端口跟tomcat可无关哦,8080是tomcat的端口,8787则是jvm监听的端口。到此,项目已经以debug的模式启动了。


(2)方式二

1.在eclipse的run configurations中创建一个maven build,选择好Maven工程,在Goals一栏中输入tomcat7:run。然后进入“jre”Tab,在vm arguments一栏中输入-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n


2.打开debug configuration,创建一个remote java application,同上“(1)方式一的c”部分的内容,这样,当服务器启动后,就可以进行远程debug了


(3)方式三

在tomcat/bin/的catalina.bat文件的开头加入下面的设置即可:

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

然后在eclipse新建一个remote debug,端口填入8787即可。



二、以jetty作为容器

1.在eclipse的run configurations中创建一个maven build,选择好Maven工程,在Goals一栏中输入jetty:run。然后进入“jre”Tab,在vm arguments一栏中输入-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

2.打开debug configuration,创建一个remote java application,在host中输入服务器地址,一般就本机localhost。在port一栏中输入上面配置中端口号8787。这样,当服务器启动后,就可以进行远程debug了。这种debug方式的好外是可以在debug依赖的jar包,并在上面设置断点。(前提是你已经获得了jar包的源代码)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值