Linux下
连接:http://stackoverflow.com/questions/3835612/remote-debugging-tomcat-with-eclipse#userconsent#
将本地工程打成war包,放到远端tomcat上,
在catalina.sh文件中加一句话:
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=9001,server=y,suspend=n"
需要改的就只是这个端口,这个端口就是用来远程调试监听的端口,并不是tomcat发布服务的端口8080。
在远程端执行命令:[root@localhost bin]# sh catalina.sh jpda run或者./catalina.sh jpda run
可以看到输出了一段监听端口9001,这个就是我们刚才配置的端口号
现在打开eclipse。
选中需要远程调试的项目,右键:
选中java application右键,new一个
Name:显示在左边remote java application下的一个名字,可随意
Project:需要远程调试的项目
Host:远程主机地址
Port:监听端口,也就是我们刚配置的9001
然后apply,debug
断点设置好,直接访问页面就可以进入调试。
注意:这里调试的时候一定要保证打包的代码和本地的代码是一致的,行号都要一样,这个调试是根据本地的代码的断点在多少行来确定远程代码停在多少行,如果本地代码行数有变,刚好打断点的这行在远端是空行或者注释,则相当于没有断点。调试过程中执行的始终是远端的代码,执行下一步的时候远端代码下一行行号是多少,本地就停在第几行。所以如果代码不一致的话可能会导致远端执行下一行的时候,本地刚好停在了注释或者空行上。
windows下
新建debug.bat文件(由于可能会有编码方式的影响,建议直接复制一个.bat文档然后将内容清空)。
内容写:
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899 startup |
双击运行即可。
Springboot远程调试
Springboot构建的项目直接是jar包,所以远程调试更简单,
直接使用命令运行:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar aaa.jar
Eclipse端调试与上面的调试方式一样。
Springboot还可以使用自带的spring-boot-devtools进行调试,操作方式未知(未学),但是个人感觉直接用命令的更简单。