java - Eclipse 条件断点 - 仅在其他断点之后

标签 java eclipse debugging breakpoints

我正在调试一个执行大量方法调用的应用程序。例如,我想调试 methodA。它被调用了 1000 次。

但是,在我的主循环中,我只想在几条语句后开始调试方法 A。

public void methodA()
{
    //does something nasty that I want to debug
}
public static void main( String[] args )
{
    for (int i=0; i<1000; i++)
    {
        methodA();
    }
    methodB();
    methodA();
}

我想在 methodA methodB 被调用之后开始中断。我真的不想更改我的代码(例如,插入一个 boolean 值并使断点以该 boolean 为条件)。

在 Eclipse 中可以实现这样的功能吗?或者有更好的选择吗?

最佳答案

A) 只需将命中数设为 1000。

它仅在 for 循环内的 methodA 不在某些条件下时才有效。

B)使用条件

将断点放在methodA中的第一条语句上。引用图片

[这里 methodA == test 并且我在第 14 行放置了断点]

enter image description here

右键单击断点并选择Breakpoint properties选项并添加以下条件。

StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
return (e.getLineNumber() == 9);

这里的 9 表示第二次调用方法 A(或测试)的行号。在您的代码中找到相同的行号并进行更改。

检查 StackTraceElement 的 javadoc除了行号,您还可以使用方法名称。也就是说,只有当它从函数 xyz 调用时才能中断。

enter image description here

C) 等待 eclipse 氧气 (4.7)

在下一个版本的 eclipse JDT 将提供断点触发点。所以你可以说 hit breakpoint y ONLY IF breakpoint x was hit before.

有了这个,您可以仅在给定方法流 [stacktrace] 上的断点处暂停。

例如:只有当调用流程为:

methodA() --> methodB() --> methodC() --> methodD() 不开启

methodA() --> methodC() --> methodD()

查看此 bug更多细节。将您的意见/建议添加到此错误中。

关于java - Eclipse 条件断点 - 仅在其他断点之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30725254/

相关文章:

java - 如何为一种小语言构建解释器?

java - 来自扫描仪的空白输入 - java

java - 如何在Eclipse中执行java源码

c++ - DebugView 打印列显示 "????"

NetBeans 中的 Java 相对路径

java - Liferay 工作流程与 Kaleo : use custom class on task

java - Eclipse 中的步骤是输入每个方法

c++ - 初始化完成 opengl 支持可用

java - 打印一个 List<String> 到 logcat

silverlight - 使用键盘时,Visual Studio 2010中的调试Silverlight卡住