When I program C/C++ with Visual Studio I often use __asm nop; command to insert a noop code in order to have something to break on. For instance:
if (someCondition())
{
__asm nop;
}
I have no idea what to do when the condition occurs, but I want to stop the execution and examine the current state. Sometimes someCondition() is simple enough to create a conditional breakpoint, but conditional breakpoints slow down the execution significantly, besides it is not always possible.
Now, in C# I break into the debugger directly either by calling System.Diagnostics.Debugger.Break() or System.Diagnostics.Debugger.Launch().
Now I am forced to program Java and until now I have found no better alternative than just do System.out.println("bla-bla") and set a breakpoint there. Again, please consider the case when a conditional breakpoint is not feasible.
So, I wonder – is there an __asm nop or System.Diagnostics.Debugger.Break() alternative in Java?
In bytecode you have a
nopinstruction, but there’s nonopstatement in the Java language.You can add an extra
;on a line by itself and the code will still compile, but that’s not much more meaningful than adding an empty line.Another “does nothing” statement could be:
which has no side-effects what so ever, and can be turned off when executing the program.
As it turns out,
assert truedoes not seem to generate any bytecode instructions, which causes break-points on assert true to be skipped all together. Eclipse is however able to break on a statement such aswhich is quite similar.