1.jar包启动时
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -jar demo.jar--jdk1.7之后
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -jar demo.jar--jdk1.7之前
2.tomcat启动时
服务器端:
Jdk1.7之前,需要在web容器中添加如下命令:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
以tomcat为例,也就是需要在Catalina.sh文件中修改CATALINA_OPTS参数,加入上述内容:
Set CATALINA_OPTS=$CATALINA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
Jdk1.7之后,需要在web容器中添加如下命令:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
还是以tomcat为例,修改Catalina.sh文件:
Set CATALINA_OPTS=$CATALINA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
不过,根据观察,在tomcat原本的catalina.sh配置文件应该就已经对远程调试的参数进行了默认配置:
全局搜索CATALINA_OPTS,就能看到如下配置(tomcat7和8.5都有):
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="8000"
fi
if [ -z "$JPDA_SUSPEND" ]; then
JPDA_SUSPEND="n"
fi
if [ -z "$JPDA_OPTS" ]; then
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
fi
CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
shift
从上述配置中就可以看出,tomcat已经默认提供远程调试的设置了,所以不需要我们再去单独配置了,我们只需要本地使用相应端口进行远程调试即可。
本地操作:
首先本地对debug方式进行设置,改为以Remote Java Application的方式进行启动,如下图所示:
设置port为远程调试的端口,按照上述介绍,就应该设置为8000,然后修改host为服务器访问ip或域名,点击右下角apply
配置好启动方式后,去需要调试的类打上断点,然后以dubug模式启动即可。
然后通过各种工具访问需要调试的后台,即可触发调试:
值得注意的是,如果服务器上项目没有启动,那么你本地的服务启动会连接错误,所以需要先保证服务器上的服务是成功启动了的。