我目前正在处理一些似乎有一些竞争条件的并发代码。我正在尝试使用当前的 IDE Eclipse 调试代码,但我并不完全满意。特别是,变量存在竞争条件,使得访问它的方法之一(“获取”它的方法)没有断点,变量设置方法不会完成,并且变量设置为 null。但是,如果我在访问方法上设置一个断点,并按住 F8(默认的跳过按钮),该变量几乎总是设置为正确的(非空)值。
这让我问以下问题:Eclipse 是否有可能没有足够快地暂停跨所有线程的断点执行,以至于我可以查看潜在的竞争条件,因为它出现时没有断点,或者是其他原因(可能)发生?
如果 Eclipse 不能快速暂停执行,是否有其他适用于 Java 的 IDE/调试器可以在这方面做得更好?请注意,我不是在寻找像 Java Pathfinder 这样的正式验证工具——我不想检查是否存在竞争条件,我希望看到它们在我的调试器中展开(如果只是因为它可能看起来很有趣的话)。
最佳答案
默认情况下,如果一个线程到达您的断点,Eclipse 将不会挂起其他线程。但是,您可以在 Window > Preferences > Java > Debug > Default suspend policy for new breakpoints
=> 'Suspend VM'
中更改此行为。
关于java - Eclipse 和其他用于调试并发代码的 Java IDE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3240726/