我正在调试一个执行大量方法调用的应用程序。例如,我想调试 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 行放置了断点]
右键单击断点并选择Breakpoint properties
选项并添加以下条件。
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
return (e.getLineNumber() == 9);
这里的 9 表示第二次调用方法 A(或测试)的行号。在您的代码中找到相同的行号并进行更改。
检查 StackTraceElement 的 javadoc除了行号,您还可以使用方法名称。也就是说,只有当它从函数 xyz
调用时才能中断。
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/