Eclipse 条件断点和全局变量?

问题描述

我有一个全局变量

static int debugNumber;

一个带条件的断点

debugNumber > 1

选中 Suspend threadConditionalSuspend when 'true'。目前,如果我暂停程序的执行并将鼠标悬停在声明上,则显示的值为 2。不过,此断点不会中断。

据我在 Google 和 SE debugNumber > 1 上看到的应该没问题。我做错了什么?

解决方法

我们很清楚:该行的意思是:如果代码执行到这一行(带有断点的行),那么执行断点通常会做的事情:冻结线程(或者如果您' 已经将事情配置为那样,并暂停所有其他线程,这不是默认值)。但是,条件断点意味着:在像往常一样中断之前,检查条件。如果条件为假,则什么都不做。

条件断点的中断频率与正常断点相同或更少,但绝不会更频繁。

听起来您想要的是“断点”代码库中设置 debugNumber 变量的每一行,如果它被设置为 2 或更高的值。如果这就是您想要的,请在 debugNumber 上创建一个“监视”并配置监视以中断执行。

如果这不是您想要的,那么,您在描述中没有犯任何错误,那么这就是十亿件可能出错的事情之一:

  • 带有断点的那一行从未被击中。
  • 当它到达您的断点时,debugNumber 为 1 或更小。
  • 您使用“运行”来启动您的应用程序,而不是“调试”(几乎没有理由“运行”任何东西,总是选择“调试”)
  • Eclipse 中的全局“禁用所有断点”切换已关闭。它(除非你改变了东西)在工具栏上:一个更大的“断点点”(蓝色圆圈),上面有一个大斜线。这是一个切换按钮。压进去了吗?
  • Eclipse 调试器已不同步。如果发生这种情况,它会向您抛出一个对话框,但此对话框中的一个选项是“现在和将来忽略”(这是一个比那更简洁的文本,但这就是它的要点)。如果你按下它,它可以不同步。调试视图会告诉你。如果您在 eclipse 运行时更改已编译的代码,或者更改源文件中的签名并在运行过程中保存源文件,就会发生这种情况。
  • 还有很多事情