Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调试intellij上的求值表达式_Java_Eclipse_Debugging_Intellij Idea - Fatal编程技术网

Java 调试intellij上的求值表达式

Java 调试intellij上的求值表达式,java,eclipse,debugging,intellij-idea,Java,Eclipse,Debugging,Intellij Idea,使用计算表达式/代码片段: 是否可以调试intellij?上的计算表达式/代码片段 在eclipse上,若在显示窗口上启动代码求值,并且该代码中有任何断点,eclipse调试器将在该断点上停止。如果您再试一次,eclipse会说它可以在嵌套调试会话上执行检查 Intellij似乎在另一个会话中启动expression 我在这方面的工作流程是在代码的“任意一行”上停止,并添加我想要为Q&D调试评估的片段。很多时候,这会导致调试重新启动。不幸的是,在Intellij 14中,这是不可能的,并在您提

使用计算表达式/代码片段:

是否可以调试intellij?上的计算表达式/代码片段

在eclipse上,若在显示窗口上启动代码求值,并且该代码中有任何断点,eclipse调试器将在该断点上停止。如果您再试一次,eclipse会说它可以在嵌套调试会话上执行检查

Intellij似乎在另一个会话中启动expression


我在这方面的工作流程是在代码的“任意一行”上停止,并添加我想要为Q&D调试评估的片段。很多时候,这会导致调试重新启动。

不幸的是,在Intellij 14中,这是不可能的,并在您提供的官方链接中声明:

如果在表达式求值中调用的方法的主体中有一个断点,则该断点将被忽略

为了消除您提到的频繁重新启动调试会话的问题,我使用了以下drop frame debug功能:

  • 进入一个方法并在返回之前使用drop frame功能返回到上一个堆栈帧。请参见下面屏幕截图上的drop frame图标位置:
  • 现在可以使用不同的参数重新运行此方法,而无需重新启动调试会话(可以使用“计算表达式”对话框设置参数)

  • 该功能在IntelliJ IDEA 2019.2中不可用

    我使用的解决方法是如下更新代码:

                        Boolean shouldExecute = false;
                        if(shouldExecute){
                            //method call
                        }
    
    在调试会话期间,我将shouldExecute标志更改为true。这样,我可以在需要时调试方法调用


    当然,这只是一个解决方法,我需要稍后删除此标志

    我很确定这是不可能的,但我没有任何官方消息来源…我也在等待这几年了。将是一个不可燃烧的强大功能!这对EL Expression没有帮助非常感谢!多年来我一直在寻找这样的调试方法这是magic bro,感谢您的分享,我觉得这将节省我的工作时间!