如何在想法中使用断点中的条件?

2022-09-03 07:05:47

我已经来回尝试了更长的时间,但不知何故它不起作用。

enter image description here

我也尝试过带分号和不带分号。我还尝试在断点之前运行此行,以确保条件确实有效,

logger.error("I am Here! " + "#PDU Elements: " + pdu.getVariables().size());

并且它按预期返回 13。

有谁知道如何让它工作?

编辑

根据请求,我将添加代码运行的行,在断点处,

logger.error("I am Here! " + "#PDU Elements: " + pdu.getVariables().size());
Trap trap = Trap.createTrapFrom(variableMap, instanceIdentificationNumber); // Breakpoint in margin on this line.

编辑 2

问题似乎与IDEA随机错过一些断点有关。我还尝试了一些无条件断点(应该始终停止),这些断点仅在特定时间停止。


答案 1

在断点处快速按两次将打开一个对话框,而不是一个弹出对话框来配置条件。然后按以打开帮助对话框。CTRL+SHIFT+F8F1

正如 intellij 帮助文档所说,断点条件为:

选中此复选框并指定在文本字段中命中断点的条件。条件是 Java 布尔表达式(包括返回 true 或 false 的方法),例如 str1.equals(str2)。此表达式在设置断点的行中应有效,并在每次到达断点时进行计算。如果评估结果为真,则执行用户选择的操作。如果结果为 false,则断点不会产生任何影响。如果调试器无法计算表达式,它将显示条件计算错误消息。您可以选择是要在此断点处停止还是忽略它。字段/方法/异常断点的条件在给定字段/方法/异常的上下文中计算。在“条件”字段的右侧,有一个按钮(Shift+Enter),用于打开多行编辑器。

注意

断点条件由 java 代码组成,因此条件中发生的任何错误都将在断点处停止。并且它不支持任何 lambda 表达式。使用多语句计算条件时,需要使用语句返回结果。return

并且条件经常抛出以停止断点。您需要签入断点条件:NullPointerExceptionnull

//change the condition
pdu.getVariables().size() == 13
                  ^-----throws a NullPointerException if variables is null

//to the condition using ternary operator for checking null
pdu.getVariables()==null ? false : pdu.getVariables().size()==13

例子

例如:

private String[] run(Class<?> mainClass
     , Optional<String> launcherClass, String[] args) {
    ...
    ^-----I mark a breakpoint here
}

我的条件是,记得选中条件复选框:

launcherClass != null

我的断点条件屏幕截图

enter image description here


答案 2

只需单击断点Right Mouse Button

enter image description here

CTRL+Shift+F8或查看所有活动断点CMD+Shift+F8enter image description here


推荐