if (true) {
String a = "foo";
String b = "bar";
}
If I set a breakpoint at String a = "foo";
eclipse will stop, and I can step over and see the value of a
inside the variables window. But I can't step over the 2nd statement, it just leaves the code block and I never see the value of b
.
This forces me to add a noop statement after String b = "bar";
just so I can see what b
contains. I also can't add a breakpoint on the closing }
which I think are maybe related issues.
I know Visual Studio allows this, so is there a way to do this in Eclipse?
To set a breakpoint at the end of an arbitrary block is not possible (without byte-code hacking).
If it is a method body, then it is possible: you can set a Method breakpoint. Do this by double-clicking on the method definition line:
(notice the little arrow?) and then in the breakpoints view, select the breakpoint to see both an Entry
and an Exit
option tick-box in the displayed properties:
The little arrow indicates that, by default, we have set a breakpoint on entry to the method.
Now select Exit
(and deselect Entry
) and you will see this in the breakpoints view:
(There is a different little arrow, indicating an exit breakpoint.)
Now run the debugger on this little breaker ('Debug As a Java Application') and it will stop on the exit brace of the method:
and the local variables (only a
in this case) are now visible (with the correct values) in the Variables view:
It is worth noticing that this type of breakpoint traps method exit however this happens -- even, for example, if we exit by throwing an exception.
You can highlight the expression on the right hand side of the assignment and press Ctrl+Shift+I (for 'inspect' I think). It will evaluate the expression and give you the result. That way you can know the value of b
without needing a breakpoint after the assignment.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With