代码之家  ›  专栏  ›  技术社区  ›  Marcono1234

Eclipse:内联断点

  •  1
  • Marcono1234  · 技术社区  · 7 年前

    有没有办法在eclipseide中设置内联断点(使用插件)?

    例如,当在同一行中调用多个方法时,是否有方法为该行中的特定方法调用设置断点,而不是为整行设置断点?

    foo(bar(), baz());
               ^
    

    baz ,但是如果它也被其他方法调用,那么如果您大部分时间都必须继续,那么它可能会很烦人。)

    Location#codeIndex() .

    1 回复  |  直到 7 年前
        1
  •  1
  •   AnnaME    7 年前
    foo(bar(), 
        baz());
    

    最简单的方法是在baz()之前执行换行操作,并将断点正常放置在baz()所在的行上。在Java中,以这种方式用换行符包围方法调用不会影响其求值。

    screenshot from eclipse

    OP希望选择baz的调用,并在表达式本身的求值上创建一个断点,而不需要在断点上设置任何额外条件或编辑源代码。

    据我所知,使用Eclipse附带的标准调试工具是不可能的。

    但是,可以使用 conditional breakpoints

    通过菜单项窗口访问断点视图->显示视图->断点。在那里,选择或创建断点,然后选中条件选项。然后您必须描述一个符合您周围代码和需求的条件。当条件为true时,将触发断点。例如,通过指定调用站点行号或方法名。

    Breakpoints View in Eclipse, with conditionals enabled

    this SO answer .

    在我自己的示例代码中,我有以下设置:

    a(){
      baz(); 
      m();
    }
    
    m(){
      foo(bar(), baz());
    }
    

    Thread.currentThread().getStackTrace()[2].getMethodName().equals("m")
    

    对于我的断点,这意味着它只在从m()调用baz()时触发,而不是从a()调用。