项目无法启动了

简单的介绍一下事件过程:周一的早上,收到前端同事抛过来的一个任务,说是一个接口无法正常返回数据,于是就让他把参数发过来,我想试着在本地重现一下并且将问题修复掉,这种情况肯定是要通过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. C语言_指针变量的赋值与运算,很详细

    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...

  2. 关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例(转载)

    做项目封装UIView的时候碰到的问题,没想到有个哥们儿还写成博客,特此收藏! 问题是这样的,几个界面用到同一个自定义返回按钮,于是就想着把这个按钮单独封装起来,添加一个UIView类,在里面自定义U ...

  3. 接口测试执行工具Postman:模拟请求、用例执行、断言、批量运行用例、简单持续集成

    一.接口测试-postman-模拟HTTP Requests 二.接口测试-postman-权限Authorization 三.接口测试-postman-断言Writting Test 四.接口测试- ...

  4. vim编辑器——常用操作整理

    注意:以下的操作都是在命令状态下进行的,不要进入插入状态了.参考这里 1.删除 dd       删除一行 ndd    删除以当前行开始的n行dw    删除以当前字符开始的一个字符ndw   删除 ...

  5. 修改android 开机画面

    对于使用安卓手机的人来说,能够自由定制手机的各种界面是每个用户之所以喜欢安卓系统的最根本的缘由,比如手机的开机界面中的bootanimation.zip文件.本文就如何修改开机界面,做一个简单的流程介 ...

  6. HighCharts之2D堆柱状图

    HighCharts之2D堆柱状图 1.HighCharts之2D堆柱状图源码 Stacked.html: <!DOCTYPE html> <html> <head> ...

  7. HI3531由DMA 发起PCIe 事务

    Hi3531 PCIe 控制器内含DMA 控制器,DMA 控制器包含有两个DMA 通道(一个 DMA 读通道和一个DMA 写通道).PCIe 控制器内包含的DMA 控制器用于大数据量 的存储器读写事务 ...

  8. No bean named 'hibernateTemplate' is defined

    1.错误描述 WARN:2015-05-01 15:42:22[localhost-startStop-1] - Exception encountered during context initia ...

  9. Linux显示本地端的文件系统

    Linux显示本地端的文件系统 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ df -l 文件系统 1K-blocks 已用 可用 已用% 挂载点 /dev/ ...

  10. ORA-00936: missing expression

    1.错误描述 Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 Connected as scott@ORC ...