java Eclipse条件断点仅在其他断点之后
我正在调试一个执行大量方法调用的应用程序。例如,我想调试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();
}
只有在调用methodB
之后,我才想开始打断methodA
。我真的不想更改代码(比如,插入一个boolean
值并使断点以该boolean
为条件)
这样的事情在Eclipse中可能发生吗?还是有更好的选择
# 1 楼答案
怎么样
# 2 楼答案
我使用系统属性来实现这一点
这个例子
假设我们有这样一门课:
我们希望在
methodA()
内添加一个断点,但只在调用methodB()
后停止,而不向代码中添加额外变量或使用计数器设置属性的断点
首先,让我们在
methodB()
内添加一个断点,并使其成为条件。在这种情况下,我们将把系统属性设置为true
。我们不想在methodB()
内暂停,因此条件将返回false
:请参见下面的GIF:
检查属性的断点
现在,我们在
methodA()
中添加了一个断点,也带有一个条件。在这种情况下,我们首先得到set system属性的值:然后,我们将其解析为布尔值并返回:
(请注意,默认值为
"false"
,因此如果未设置属性,断点将不会暂停。)在下面的GIF中选中此步骤:
奔跑
现在,如果我们在调试模式下运行这个类,
methodA()
处的书签只会在调用methodB()
后暂停:再次禁用断点
如果
methodA()
在methodB()
之后被多次调用,并且我们只想检查它一次,那么我们最终可以取消设置属性。例如,假设我们的main()
方法现在是这样的:我们可以使用这个条件,将属性设置回false,以避免再次在此断点处停止:
当然,这只是一个简单的例子——天空是这个技巧的极限