java - java中是否有等效的asm nop?

标签 java debugging

当我用 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 nopSystem.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/

相关文章:

java - 在 Android Q 上使用 DownloadManager 和 FileProvider 打开下载后的 PDF (10)

java - Eclipse 中的步进过滤器

c++ - 使用 OpenGL 互操作的 nsight 调试

javascript - 调试 jQuery 插件

java - 我想在 Spring 项目中使用 JSP 文件的开发版本。是否可以?

java - 使用 EntityManagerFactory 时遇到问题

Java日历日期逻辑错误

java - Android 6.0 上的 Android java.lang.OutOfMemoryError

java - Eclipse远程调试,看不到对象的属性

python - 在 Spyder 中设置断点不起作用