【问题标题】:Java keyword to start debugger?启动调试器的 Java 关键字?
【发布时间】:2012-09-30 21:14:00
【问题描述】:

我很好奇 Java 中是否有一个关键字可以让 eclipse 或 IDE 在代码到达特定点时停止运行代码并启动调试器。

我知道断点对于这个特定问题非常有用,但是我希望仅在达到特定条件时才开始调试程序,并且该条件是程序不定期检查的条件,所以我会必须编写它纯粹用于调试。

例如,

if(condition_is_met){
    //throw debugger and begin to step through here
}

我能想到的唯一其他方法是......

if(condition_is_met){
    System.out.println("Something"); //Then set a breakpoint here in Eclipse.
}

这看起来很混乱,这意味着我以后清理代码时可能会错过它。 Java 有没有这方面的关键字,可能类似于 Javascript 的 debugger 关键字?

【问题讨论】:

  • AFAIK Eclipse 有条件断点。

标签: java eclipse debugging


【解决方案1】:

Java 中没有这样的关键字可以启动 eclipse 调试器。请记住,Java 不适合 Eclipse,但它正好相反。如果你想要这样的东西,在eclipse中使用条件断点,你可以通过eclipse的断点属性窗口设置。

【讨论】:

    【解决方案2】:

    它没有关键字,但您可以在 Eclipse 中指定条件调试。

    查看下方

    1. FAQ How do I set a conditional breakpoint?
    2. Effective Debugging: Conditional Breakpoints

    【讨论】:

      【解决方案3】:

      Eclipse 有条件断点: 使用编辑器左侧边距或“调试”透视图的“断点”视图中断点上的上下文菜单,然后选择断点的属性。在对话框中勾选Enable Condition,输入任意Java条件,如list.size()==0

      (来自:http://wiki.eclipse.org/FAQ_How_do_I_set_a_conditional_breakpoint%3F

      【讨论】:

        【解决方案4】:

        创建一个实用程序类:

        public final class DebugHelper {
            public final static void breakpoint() {} // Set break point here
        }
        

        然后,您可以在希望 Eclipse 停止的所有位置使用 DebugHelper.breakpoint()

        在运行时,该方法最终会被 JIT 替换为空(禁用调试时),因此对于常用代码是免费的。

        这种方法有两个优点:

        1. 保留此代码并没有什么坏处
        2. 如果要删除,很容易找到(只需在工作区中搜索该方法的所有引用即可)

        【讨论】:

        • 这是一个非常酷的方法!目前,条件断点很适合我,但对于更大/未来的项目,我一定会记住这一点。
        猜你喜欢
        • 2012-08-28
        • 2017-02-07
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        • 2011-01-04
        • 1970-01-01
        相关资源
        最近更新 更多