Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.2k views
Welcome To Ask or Share your Answers For Others

1 Answer

In bytecode you have a nop instruction, but there's no nop statement 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:

assert true;

which has no side-effects what so ever, and can be turned off when executing the program.

As it turns out, assert true does 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 as

assert Boolean.TRUE;

which is quite similar.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...