在java中是否有asm nop等效物?

2022-09-01 00:58:38

当我使用Visual Studio对C / C++进行编程时,我经常使用命令插入noop代码,以便有东西可以中断。例如:__asm nop;

if (someCondition())
{
  __asm nop;
}

我不知道当条件发生时该怎么办,但我想停止执行并检查当前状态。有时很简单,可以创建条件断点,但条件断点会大大减慢执行速度,此外并不总是可能的。someCondition()

现在,在 C# 中,我通过调用 或 直接闯入调试器。System.Diagnostics.Debugger.Break()System.Diagnostics.Debugger.Launch()

现在我被迫对Java进行编程,直到现在,我还没有找到比在那里设置断点更好的选择。同样,请考虑条件断点不可行的情况。System.out.println("bla-bla")

所以,我想知道 - 在Java中是否有或替代方案?__asm nopSystem.Diagnostics.Debugger.Break()


答案 1

在字节码中,你有一条指令,但在Java语言中没有语句。nopnop

您可以单独在一行上添加额外的代码,代码仍将编译,但这并不比添加空行更有意义。;

另一个“什么都不做”的说法可能是:

assert true;

它没有副作用,并且可以在执行程序时关闭。

事实证明,它似乎没有生成任何字节码指令,这会导致断言 true 上的断点一起跳过。然而,Eclipse能够在诸如assert true

assert Boolean.TRUE;

这是非常相似的。


答案 2

Java 将此解释为空语句:

;

不过,正如评论中所指出的,Eclipse 不允许您在此处设置断点。如果你想要一些无用的东西,你可以在上面放一个断点,这也很好,很容易打字,我建议:

if(false){}

您的编译器可能会警告您从未输入过此内容,这对于提醒您在编译以进行生产之前将其取出非常有用。希望这有帮助!