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

Rob*_*bAu 7 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();
}
Run Code Online (Sandbox Code Playgroud)

我想在被叫methodA 之后 才开始打破methodB.我真的不想改变我的代码(例如,插入一个boolean值并使断点成为条件boolean).

这样的东西在Eclipse中可能吗?还是有更好的选择?

Cha*_*G K 8

A)简单地使用命中计数为1000.

仅当for循环中的methodA不在某些条件下时,它才有效.

B)使用条件

将断点放在methodA.Refer图像中的第一个语句处

[这里方法A ==测试,我把断点放在第14行]

在此输入图像描述

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

StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
return (e.getLineNumber() == 9);
Run Code Online (Sandbox Code Playgroud)

这里的9表示第二次调用methodA(或test)的行号.在代码中找出相同的内容并更改它.

检查用于StackTraceElement的javadoc,而不是行号,您也可以使用方法名称.即,只有在从函数调用时才能中断xyz.

在此输入图像描述

C)等待日食氧气(4.7)

在Eclipse的下一个版本中,JDT将在断点上提供触发点.因此,只有在断点x被击中之前,你才可以说击中断点y.

有了这个,您只能在给定的方法流[stacktrace]上暂停断点.

例如:只有当呼叫流程为:时才能在断点处停止:

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

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

有关详细信息,请参阅此错误.添加您对此错误的评论/建议.