在 intellij 上调试评估表达式

Posted

技术标签:

【中文标题】在 intellij 上调试评估表达式【英文标题】:debug an evaluate expression on intellij 【发布时间】:2015-12-11 16:12:10 【问题描述】:

使用评估表达式/代码片段:

https://www.jetbrains.com/idea/help/evaluating-expressions.html

是否可以在 intellij 上调试评估的表达式/代码片段?

在 Eclipse 上,如果您在显示窗口上启动代码评估并且该代码内部有任何断点,则 Eclipse 调试器会在该断点处停止。如果你再试一次,eclipse 说它可以在嵌套调试会话上执行检查。

Intellij 似乎在不同的会话中启动表达式。

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

【问题讨论】:

我很确定这是不可能的,但我没有任何官方来源...... 我也等了好几年了。将是一个令人难以置信的强大功能! 【参考方案1】:

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

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

为了消除您提到的频繁重启调试会话的问题,我使用了以下解决掉帧调试功能的方法:

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

【讨论】:

这对 EL 表达式没有帮助 非常感谢您!我一直在寻找这样的调试方法 这太神奇了,谢谢你的分享,我觉得这可以节省我的工作时间!【参考方案2】:

该功能在 IntelliJ IDEA 2019.2 中不可用

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

                    Boolean shouldExecute = false;
                    if(shouldExecute)
                        //method call
                    

在调试会话期间,我会将 shouldExecute 标志更改为 true。这样我可以在需要时调试方法调用

粗略,这只是一种解决方法,我需要稍后删除此标志。

【讨论】:

【参考方案3】:

Alt + F8 是表达式或变量求值的快捷方式。

但是,您也可以选择变量,右键单击它并按照this article 中的说明进行评估。

【讨论】:

【参考方案4】:

选择您要评估的变量并按Alt + F8。详细步骤在这里:

https://www.websparrow.org/misc/shortcut-key-to-evaluate-expression-variable-in-intellij-idea

【讨论】:

以上是关于在 intellij 上调试评估表达式的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ:求值lambda表达式在调试时引发编译错误

调试时无法评估表达式

尝试调试 WCF 服务代码(MSVS 2013)时,在“添加监视”功能上获取“表达式评估器中的内部错误”

无法评估选定的表达式? - Eclipse 库调试错误

Java Eclipse 求值表达式

无法使用 Visual Studio 2013 调试托管代码(“无法评估表达式”错误 - 正在使用调试版本)(请注意,VS 2012 有效)