如何密切监视java.util.map中的某些插入

如何密切监视java.util.map中的某些插入,java,map,Java,Map,我在Eclipse中调试其他人的Java代码时遇到问题,我已经将问题缩小到Java.util.Map中的某个条目。在某个阶段,某个键被放入地图中,这导致了问题。我已经检查了对这个映射对象的所有“put()”和“putAll()”调用,但是没有找到创建错误条目的位置 所以,问题是:我如何监视这个映射对象,以查看某个键的插入?基本上,只要在这个映射上插入或更新了键x,我就希望代码执行停止。这可能吗 干杯 Martin在Eclipse中,您可以创建一个条件断点。此断点仅在指定的条件发生时触发。这将允许

我在Eclipse中调试其他人的Java代码时遇到问题,我已经将问题缩小到Java.util.Map中的某个条目。在某个阶段,某个键被放入地图中,这导致了问题。我已经检查了对这个映射对象的所有“put()”和“putAll()”调用,但是没有找到创建错误条目的位置

所以,问题是:我如何监视这个映射对象,以查看某个键的插入?基本上,只要在这个映射上插入或更新了键x,我就希望代码执行停止。这可能吗

干杯


Martin

在Eclipse中,您可以创建一个条件断点。此断点仅在指定的条件发生时触发。这将允许您监控地图上的
方法

步骤1:右键单击断点后选择断点属性:

第2步:选中条件复选框并输入您的条件:


步骤3:在调试模式下运行应用程序。

谁实例化地图?如果可以设置,则提供自定义实现,该实现在传递搜索值时引发异常。然后,您将在stacktrace中看到谁以及何时插入此值。

与我们的一位前辈交谈后,发现问题不在于地图,而在于用于填充地图的底层XML结构。看来我是在耍花招。不过,非常感谢所有回复的人

当您说“已检查所有”put()和“putAll()”时,您的意思是在那里设置断点吗?另外:使用了
Map
的什么实现?@marw是的,您可以重写put()和putAll()方法。根据您的要求编写on逻辑。如果键是可变的,则可以在插入后更改其状态。这可能是您看不到它是如何插入的原因。可能映射已使用相关条目构造。@stonedsquirrel:正确,我已为此映射实例的所有put和putAll调用设置了断点。这些都不是关键,但它确实存在。SpaceTrucker,地图在构建后是空的。我发现在“断点”视图的“调试”透视图中这样做更容易。提问者可能已经知道了这一点,并希望知道确切的断点位置。@DaveRlz如果知道,他会让我知道我确信。从他对问题的描述来看,条件断点似乎是让他检查密钥何时插入地图的最佳方法。我尝试过这个方法,但运气不佳(即使是无条件断点)。这听起来是个好主意,Leos。谢谢。我创建了自己的类来实现Map接口,并使用它来代替默认实现。然而,奇怪的是,put()和putAll()方法中从未设置具有所需值的键,但它在代码的后期阶段仍然存在。这真的很奇怪。。。