Debugging IntelliJ Idea(调试)依赖于其他断点的条件断点
我想在IntelliJ Idea中设置一个调试断点,该断点仅在另一个先前的断点被激活时才处于活动状态。 例如,我在第10行有一个断点B1,在第20行有另一个断点B2。即使B2s条件为真,调试器也只应在B2s之前B1s条件为真时停止 这样的想法可能吗 更新: 目前我正在使用此解决方案:Debugging IntelliJ Idea(调试)依赖于其他断点的条件断点,debugging,intellij-idea,breakpoints,conditional-breakpoint,Debugging,Intellij Idea,Breakpoints,Conditional Breakpoint,我想在IntelliJ Idea中设置一个调试断点,该断点仅在另一个先前的断点被激活时才处于活动状态。 例如,我在第10行有一个断点B1,在第20行有另一个断点B2。即使B2s条件为真,调试器也只应在B2s之前B1s条件为真时停止 这样的想法可能吗 更新: 目前我正在使用此解决方案: 设置两个断点 禁用断点#2 启动调试器,等待断点#1处于活动状态 激活断点#2 我希望有一种更简洁的方法来实现这一点:)您可以在查看断点…查看: 在您的情况下,您首先必须在B1上设置一个条件断点,这样当它被点击时
我希望有一种更简洁的方法来实现这一点:)您可以在
查看断点…
查看:
在您的情况下,您首先必须在B1上设置一个条件断点,这样当它被点击时,然后只有B2才会被触发
当某些类中的某些条件满足时,调试特定类的另一种编程方法
/*
* Breakpoint helper, stops based on a shared state
* STOP variable
*
* Everything in here should be chainable
* to allow adding to breakpoints
*/
public final class DEBUG {
/*
* global state controlling if we should
* stop anywhere
*/
public static volatile boolean STOP = false;
public static volatile List<Object> REFS = new ArrayList<>();
/**
* add object references when conditions meet
* for debugging later
*/
public static boolean ADD_REF(Object obj) {
return ADD_REF(obj, () -> true);
}
public static boolean ADD_REF(Object obj, Supplier<Boolean> condition) {
if (condition.get()) {
REFS.add(obj);
return true;
}
return false;
}
/*
* STOPs on meeting condition
* also RETURNS if we should STOP
*
* This should be set when a main condition is satisfied
* and can be done as part of a breakpoint as well
*/
public static boolean STOP(Supplier<Boolean> condition) {
if (condition.get()) {
STOP = true;
return true;
}
return false;
}
public static boolean STOP() {
return STOP(() -> true);
}
/*
*断点助手,基于共享状态停止
*停止变量
*
*这里的一切都应该是可链接的
*允许添加到断点的步骤
*/
公共最终类调试{
/*
*全球国家控制,如果我们应该
*停在任何地方
*/
公共静态可变布尔停止=false;
public static volatile List REFS=new ArrayList();
/**
*在条件满足时添加对象引用
*以便以后调试
*/
公共静态布尔添加参考(对象obj){
返回ADD_REF(obj,()->true);
}
公共静态布尔添加参考(对象对象对象、供应商条件){
if(condition.get()){
参考添加(obj);
返回true;
}
返回false;
}
/*
*在满足条件时停止
*如果我们应该停止,也会返回
*
*这应该在满足主要条件时设置
*也可以作为断点的一部分来完成
*/
公共静态布尔停止(供应商条件){
if(condition.get()){
停止=真;
返回true;
}
返回false;
}
公共静态布尔停止(){
返回停止(()->true);
}
需要设置断点的条件的位置
您希望根据某个条件停止的位置
我一直忽略了这个菜单项,有时我看不见树木:)太糟糕了,他们把这个菜单埋了起来,很难找到。收藏夹>断点>右键+单击断点>编辑断点>更多FWIW,你可以在IntelliJ 2017.1中通过右键单击断点,然后单击机器人上的“更多”来访问它tom在弹出窗口的左边。你可以为此指定一个快捷方式,或者只使用默认的Ctrl+Shift+F8一次查看所有的bps。这太棒了。我甚至不知道这是一件事。