今天对项目进行断点调试的时候一直没有成功进入到调试模式,打的断点是这样的
底部debugger窗口也没有显示断点信息
出现比较多的几个原因:
-
1,点到了箭头指向的Mute Breakpoints,断点被禁用(这种情况下打出来的断点是灰色的,排除)
-
2,pom文件引用了热部署jar包(),需要将属性设置为false或去掉jar包(查看项目pom文件并没有引用热部署jar包,排除)
-
3,本地tomcat的Catlina.bat配置问题
针对第三种情况找到的有几种修改方案:
- 注释掉Set "CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
- 注释掉set JAVA_OPTS=-XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true
- 在IDEA的Run/Debug Configurations里补充配置
点“+”号添加一项
name:JAVA_OPTS
value:-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Xms2048m -Xmx2048m
在这过程中我又遇到了新的问题,重新debug模式运行的时候,出现了
Unable to open debugger port (localhost:5005): java.net.ConnectException "Connection refused: connect"
点击rerun的时候报Error running 'test' Invalid arguments : Already listening [timeout, name]
可能是tomcat没有正确关闭或端口占用问题,经确认不是这两种情况,尝试很多种方式都没有解决,最后回到断点不起作用这个问题上,对比tomcat的catalina.bat里配置的JAVA_OPTS和IDEA里的配置,这两个的配置不同造成冲突
所以上文提到的注释tomcat里的JAVA_OPTS是可行的(实测可行)
还有一种方法,让catalina.bat继承idea中配置(让两者配置一致)
catalina.bat中修改为set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -Xms512M -XX:MaxPermSize=256m
正确配置后debug运行,断点终于打上了√
进入断点后可以正常调试了