Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

debugging - Is there asm nop equivalent in java?

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...