当我用 Visual Studio 编写 C/C++ 时,我经常使用 __asm nop;
命令插入 noop 代码,以便有一些东西可以中断。例如:
if (someCondition())
{
__asm nop;
}
我不知道当条件发生时该怎么做,但我想停止执行并检查当前状态。有时 someCondition()
很简单,可以创建条件断点,但条件断点会显着减慢执行速度,而且并非总是可行。
现在,在 C# 中,我通过调用 System.Diagnostics.Debugger.Break()
或 System.Diagnostics.Debugger.Launch()
直接进入调试器。
现在我被迫编写 Java 程序,直到现在我还没有找到比只执行 System.out.println("bla-bla")
并在那里设置断点更好的选择。同样,请考虑条件断点不可行的情况。
所以,我想知道 - Java 中是否有 __asm nop
或 System.Diagnostics.Debugger.Break()
替代方案?
最佳答案
在字节码中有 nop
指令,但在 Java 语言中没有 nop
语句。
你可以在一行中单独添加一个额外的 ;
代码仍然可以编译,但这并不比添加一个空行更有意义。
另一个“什么都不做”的陈述可能是:
assert true;
没有任何副作用,执行程序时可以关闭。
事实证明,assert true
似乎没有生成任何字节码指令,这会导致 assert true 上的断点一起被跳过。然而,Eclipse 能够中断诸如
assert Boolean.TRUE;
很相似。
关于java - java中是否有等效的asm nop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736275/