问题描述
某日开发,欲查看某对象在运行时的实际状况,发现打不了断点,而且这是很正常的代码。反观隔壁行的注释,反倒是能打上。这个代码非但打不了,有时候打了断点显示的是灰色禁入标识
,没见过这场面,令我费解
原因分析
对不能打断点的情况,是因为这里没有正式代码,是个空行或者是文档注释。
对灰色禁入标识,是因为这里有普通注释或者注解,或者这行只有一个右括号"}"
上面所说的,都是正常情况下的样子
对注释能打,代码不能打的情况,本人推测是运行代码和当前代码不一致(当前代码编辑过,引起行数改变)造成的,但是本人并没有成功复现这个场景,如果有人复现了欢迎回复我改一下这里。
终于复现了,这是前段时间的问题,现在给大家观摩观摩(但是似乎只有空行不能打?)
另外还有一种情况,某if竟然打的是灰色禁入了(其实和上边是一种情况)
???我不理解
鼠标放在灰色标识上,提示是这样的,说我这行没有可执行的代码,没有吗??
Line 109 in Opt.equals() (com.ruoyi.sync.domain) No executable code found at line 19 in class com.ruoyi.domain.Opt Suspend: all
来个绝活,平时大概率见不到的那种:
一行代码两个断点,这里我是在运行起来以后,断开if和return,分别打上断点然后再合并到一行,就出现了这个效果,但是不保熟啊,因为我有的时候出不来这个效果。
来个全家福
解决方案
正常情况下(本来就不需要断点的时候):
对不能打断点的情况,是因为这里没有正式代码,是个空行或者是文档注释。
对灰色禁入标识,是因为这里有普通注释或者注解,或者这行只有一个右括号"}"
不正常情况下,debug模式重启可解决其它蹊跷问题(双断点不消失,非运行状态打断点有一定概率出现,也有可能闪现双断点后消失)。
灰色禁入确实代表,debug一定不会进入这个断点
代码运行不进的时候是这个样子(下图的else部分):