项目无法启动了

简单的介绍一下事件过程:周一的早上,收到前端同事抛过来的一个任务,说是一个接口无法正常返回数据,于是就让他把参数发过来,我想试着在本地重现一下并且将问题修复掉,这种情况肯定是要通过debug快速定位问题所在的,但是在IDEA上点击debug按钮后却一直无法正常启动项目,控制台上也能看到日志,但是基本都在几个步骤后无法再继续下去,重复试了几次都无法正常启动项目,日志输出到特定的那几句后就停止了,调试代码也就更无从谈起了。

什么原因导致的?

由于是第一次碰到这个问题,所以不太清除到底是什么原因,只记得当时重复的试了几次项目的clean install,但是这几次的重新构建和重新启动的结果都是无效,项目依然无法通过debug模式启动。

我也有点晕了,不过代码肯定是没问题的,因为压根儿就没有改过代码,我心里也觉得应该是一个设置的小问题,只不过我不知道具体是哪里有问题罢了,于是通过run按钮启动项目验证一下,果然启动成功了。这也就说明项目和代码没有任何问题,肯定是IDEA某个设置项的问题,没有设置好或者被我无意间改错了。

接着就是问问同事和朋友有没有遇到过类似问题的,但是他们都说没遇到过,前端同事催的也比较急,毕竟上线最重要,所以也没有纠结这个问题,于是把代码拉到mac上,在mac上进行debug调试,在mac上竟然可以了,这就更尴尬了,到底是什么原因呢?难道是windows系统出毛病了吗...

Method Breakpoints

解决了前端同事的接口问题之后,赶紧又折回来搞这个问题,到底是怎么回事!

上网查了一下,发现也有其他朋友遇到过类似问题,解决办法也类似,就是因为在项目中有断点打在了方法上,因此导致的debug变慢。解决方法也简单,将打在方法上的断点去掉即可,于是查了一下自己代码中的断点是不是也有类似的情况,果然,发现了两个打在方法上的断点:

将这几个打在方法上的断点掉之后,控制台立刻开始刷刷刷的打日志了,debug模式下项目无法启动的问题解决掉了。

关于怎么在IDEA中查看所有断点,可参考前一篇文章《Intellij IDEA查看所有断点

复盘

这个问题虽然解决掉了,不过具体原因我依然不是特别清楚,首先是为什么会出现这种情况,更重要的是为什么方法断点会导致项目根本无法启动。

虽然这个事情不大,但是当时的我确实是真切的觉得遇到麻烦了,当时的心里已经觉得不是特别好处理这件事,为什么呢?因为这既不是代码的问题、不是技术方面的问题、也不是业务的问题,怎么说呢,这算是一个突发的问题而且是一个较为意外的问题,更重要的是它困扰了我一段时间,所以我一定要找出原因!

算是花了一天的时间吧,从早上遇到这个情况,之后问了其他同事,但是没有人碰到过类似情况,很囧,到中午解决,再到下午找了半天的原因,现在简单的做一下复盘,并且针对几个想法做一下对比试验。

  • 1.为什么出现这种情况?
    应该是点击的时候没注意,在方法上点击并且打上了一个断点导致了这个情况,而在mac上没有出现这个问题的原因也清楚了,因为在mac上没有方法断点。

  • 2.Method Breakpoints的问题跟系统是不是有关系?
    在windows上解决了这个问题后,脑袋里就有了这个想法,Method Breakpoints的问题在windows和mac上是不是都会出现,答案是肯定的,一旦有方法断点都会卡住。

  • 3.Method Breakpoints的问题是不是只在接口方法中出现?
    因为出问题的那个断点是在接口方法上,所以就有了这个想法,验证后也得到了答案,在实现类上打断点也会出现此问题。

通过对这几个问题的验证,也使我更加清楚了这个问题,Method Breakpoints会使得debug变慢是一个确定的事实,与操作系统的关系不大,与是否为实现类方法也无关联,那么为什么会这样呢?

为什么在方法上打断点会这样呢?

一般遇到这种问题都会先到网上查一下,看看是不是有朋友整理了这个答案,但是这个问题并没有,只能自己一点点去查了,在idea的官方文档IntelliJ IDEA Help里有这么一段描述:

注意这么一句话:

Note that using method breakpoints can slow down the application you are debugging.

使用方法断点会使得正在debug调试的程序变慢。

总结

针对于此,也向使用IDEA的各位朋友提个建议:少用方法断点,也尽量不要在项目里打过多的断点,调试哪里就在哪里打上,调试完把断掉去掉就好。

到此为止,事件的起因、经过、结果都大致介绍完毕,至于最后这个答案,我觉得我不是特别满意,官方文档里也只是说了一下,这个做法会使debug变慢,但是更深层次的原因或者说原理还需要再去研究研究,现在依然在查一个我自己满意的答案,如果找到了我会再整理一篇文章分享出来。

首发于我的个人博客,感谢大家支持。

Intellij IDEA debug模式下项目启动慢/无法启动的事件解决过程记录的更多相关文章

  1. intelliJ idea debug模式下启动慢的原因

    今天在idea上以debug方式启动项目的时候,特别慢,启动半天启动不起来,一直以为是数据库连接的原因,但重启mysql服务后也不好使,特别郁闷... 最后发现原来是之前调试的时候加的断点还在,导致启 ...

  2. idea 项目在一般模式下可以正常启动,在debug模式下无法启动,像是卡住了的感觉

    项目一般模式下可以启动,debug模式下就是启动不了,后经过排查发现打的有断点,断点取消在重启立马就可以啦. Method breakpoints may dramatically slow down ...

  3. Myeclipse在debug模式下没加断点程序卡住,start模式下可以正常启动

    参考<eclipse在debug模式下卡住,start模式下可以启动>,地址:https://blog.csdn.net/jack_chen1994/article/details/761 ...

  4. eclipse的debug模式下启动不了tomcat

    使用eclipse启动tomcat,正常模式下可以启动tomcat,却在debug模式下无法启动tomcat. 这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动to ...

  5. IDEA Debug模式下启动慢的解决办法

    工程没有做什么大的改动,近期Idea在debug模式下启动耗时800s +,run模式下200s.Idea debug模式启动的时候会有这样的提示: 方法断点会戏剧性的降低debug的速度.当时并没有 ...

  6. 在debug模式下引入一些性能检测工具

    我们经常在debug模式下使用一些性能检测工具,例如blockCannary,leakCannary.Stetho等,但是我们release的时候又不需要这些检测工具,通常情况下我们的做法是在buil ...

  7. 引入 Tinker 之后如何在 Debug 模式下开启 Instant Run

    在<Tinker + Bugly + Jenkins 爬坑之路>一文中讲了在接入 Tinker 之后,Jenkins 中的一些坑,由此,热修复算告一段落,但是,在直接 Run 模式运行时, ...

  8. Django -&gt; debug模式下的静态文件服务(/media/)

    正式公布django项目的时候,假设存在静态文件(通常会统一放在名称为media或static的文件夹下),则须要建立url到文件系统的映射,比如.使用nginx的时候我们须要进行这种配置. # Dj ...

  9. Debug模式下编译溢出问题

    问题: 代码在Debug模式下编译报出内存溢出的错误,而Release模式下则没有. 由于Debug模式下包含调试信息,并且不作任何优化.而Release模式进行了各种优化,内存检测等操作均省去,使得 ...

随机推荐

  1. mysql4 - 高级操作

    一.联结(使用 where(早) 和 join(晚) 都可以完成联结) 1.1 从 Teacher 表和 Profession 表中,查询出老师的名字和所属专业的名称. SELECT t.`l_nam ...

  2. “No module named context_processors”

    之前因为django国际化的问题在settings.py里面改了很多东西,国际化是好使了,但是今天要用站点管理admin的时候出!错!了! 我前天用的时候还好好的啊,我的models.py和admin ...

  3. HttpClient读取数据乱码的解决方案

    博主是一个近十年的老书虫了,从高中那会儿就开始看网络小说.每天半天看晚上看啊,终于眼睛也近视了,成绩也下降了(....好像说远了) 最近在追辰东的<圣墟>,最近写到精彩部分了,一直等更新. ...

  4. elasticsearch red status fix 红色状态修复

    问题描述: spring cloud项目有用到elasticsearch,启动时进行健康校验,发现es一直是down的,导致在eureka显示也是down 问题定位:查看actuator源码发现,如果 ...

  5. UVA-10954 贪心+优先队列

    贪心策略:每次选取最小的两个数相加,将和作为新的数加入序列,再从里面取两个最小的数...直到只剩下一个数.优先队列正好对付这题. PS :以前在学校OJ做过几乎一毛一样的这题 AC代码: #inclu ...

  6. STL中坑爹的max函数

    hdu1754永远难忘的痛,参数最好不要传耗时特别长的函数,因为会调用两次,如果是递归的话,不知道多少次呢.. 切记!切记!切记! 例如: //return max(getAns(root<&l ...

  7. BZOJ2820 - 巧克力王国

    原题链接 Description 给出个二维平面上的点,第个点为,权值为.接下来次询问,给出,求所有满足的点的权值和. Solution 对于这个点建一棵k-d树,子树维护一个子树和. 如果子树所代表 ...

  8. 在SpringBoot中配置aop

    前言 aop作为spring的一个强大的功能经常被使用,aop的应用场景有很多,但是实际的应用还是需要根据实际的业务来进行实现.这里就以打印日志作为例子,在SpringBoot中配置aop 已经加入我 ...

  9. 关于instrinsicContentSize, ContentHuggingPriority, ContentcompressionResistancePriority的理解

    ios 关于intrinsic理解 最近由于项目的需要想给MBProgressHUD添加一个自定义的view, 结果花费了一两个小时也没添加上去,添加上去的view没有实际的大小,即使你给他设置了一个 ...

  10. numpy 实践记录

    reshape是从低维度到高维度.max,sum等函数都是注意axis,不选择就是全体计算. swapaxes 转换轴,将两个选择的轴对调,在CNN中X乘W有的时候需要拉伸,如果轴不同结果不对. 看p ...