私は次のクラスを持ち、arg == nullに条件付きブレークポイントを設定したいとします。これはeclipseでは動作せず、 "条件付きブレークポイントにはコンパイルエラーがあります"というエラーが返されます。理由:argは変数に解決できません "。最終的なローカル変数に応じて匿名の内部クラスに条件付きブレークポイントを設定するにはどうすればよいですか?
私はいくつかの関連情報が見つかりましたhereしかし、私は "val $ arg == null"(val $ argはデバッガの変数ビューに表示される変数名です)に条件を変更しても、Eclipseは私に同じエラーを与えます。
public abstract class Test {
public static void main(String[] args) {
Test t1 = foo("123");
Test t2 = foo(null);
t1.bar();
t2.bar();
}
abstract void bar();
static Test foo(final String arg) {
return new Test() {
@Override
void bar() {
// I want to set a breakpoint here with the condition "arg==null"
System.out.println(arg);
}
};
}
}
条件付きブレークポイント*キル*性能、回避策ではありませんので、*私の目...に醜い* –
私はこのコードをスキャンチェックを持っているので、私は多くの場合、ブレークポイントとしてThread.yield()を使用しますそれがリリースされていないことを確認してください。 –
これは必ずしもオプションではない(つまり、クラスが別のJarファイルで定義されている)場合、デバッグ後にコードを元に戻す必要があります。回避策として、私はしばしば以下のようなコードを変更します(そして、そのままにしておきます):String myArg = arg; System.out.println(myArg); – Axel