eclipse进行远程调试的时候的出现下图问题时怎么解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eclipse进行远程调试的时候的出现下图问题时怎么解决相关的知识,希望对你有一定的参考价值。
参考技术A1、Linux中配置tomcat在catalina.sh中添加如下
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"(不要换行,要在同一行)
2、Window中修改 catalina,bat文件,添加:
Set “CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
如图
参数说明:
-Xdebug : 启用调试模式
-Xrunjdwp<sub-options> : 加载JVM的JPDA参考实现库
transport=dt_socket :Socket连接,可选dt_shmem 通过共享内存的方式连接到调试服务器
address=8000 :调试服务器监听的端口
server=y : 是否是服务器端,n为客户端
suspend=n : 启动过程是否加载暂停,y为启动时暂停,方便调试启动过程
3、启动tomcat,看看tomcat是否启动成功,
如果启动成功,tomcat日志文件(catalina.out)中会有如下输入:
Listening for transport dt_socket at address: 8000
4、使用eclipse调试:
点击debug,就可进行调试了
剩下的就和普通调试一样了。断点直接在源代码中添加就行
5、可能出现的连接问题:
Failed to connect to remote VM. Connection refused.
Connection refused: connect。
出现如图所示的情况可能是已经建立了一个连接了。
解决方法:去debug透视途中,
找到点击
断开链接,就可以解决问题了。
但是按照上面的方法进行操作可能会有一些小问题,在远程服务器中更改Tomcat的配置文件catalina.sh之后第一次重启Tomcat时,一般是没有问题的(注意设置的DEBUG端口号不要和其它已有应用端口号冲突),但是在之后的重启过程中可能会出现下面的问题:
cd tomcat/bin
./shutdown.sh ; ./startup.sh ; tailf ../logs/catalina.out
ERROR: transport error 202: bind failed
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
之所以出现这个问题,主要是因为,我们添加的DEBUG端口在关闭Tomcat时不能正常关闭,重启时又会重新开启,所以端口被占用,我们可以在关闭Tomcat之后利用下面的命令进行验证会发现,仍然有进程在占用着DEBUG端口。
lsof -i:44121(或者 netstat -na|grep 44121)
这个其实就是我们自己之前开启的。当然我们可以在每次shutdown之后手动kill掉这个进程,但是终归不是解决之道。我现在想到的比较好的方法是在catalina.sh中配置DEBUG端口时,把需要添加的那一行添加到start条件的开始出,并且在stop条件的开始出添加
debug_pid=lsof -i:44121 | tail -n 1 | awk -F" " 'print $2'
kill -9 $debug_pid
以上是关于eclipse进行远程调试的时候的出现下图问题时怎么解决的主要内容,如果未能解决你的问题,请参考以下文章