如何在Eclipse中的Java调试中找到实例构造函数调用?

如何在Eclipse中的Java调试中找到实例构造函数调用?,java,eclipse,debugging,Java,Eclipse,Debugging,我在某个对象实例中的某个断点处停止。我有这个类的多个实例,在不同的地方调用 有可能找到创建了这个实例的构造函数调用吗 在这种情况下,构造函数调用不在堆栈中。不,这是不可能的;正如@ajb的评论所说,当对象以其他方式使用时,构造函数调用早已消失 一个选项是在构造函数中设置断点,并在每个实例通过构造函数时记录其对象ID(对象ID在变量视图中可见,作为this的值) 然后,当命中另一个断点时,您可以查看ID并知道它引用的对象。构造函数调用应该在stacktrace中,只要您的断点位于构造函数内部。条

我在某个对象实例中的某个断点处停止。我有这个类的多个实例,在不同的地方调用

有可能找到创建了这个实例的构造函数调用吗


在这种情况下,构造函数调用不在堆栈中。

不,这是不可能的;正如@ajb的评论所说,当对象以其他方式使用时,构造函数调用早已消失

一个选项是在构造函数中设置断点,并在每个实例通过构造函数时记录其对象ID(对象ID在变量视图中可见,作为
this
的值)


然后,当命中另一个断点时,您可以查看ID并知道它引用的对象。

构造函数调用应该在stacktrace中,只要您的断点位于构造函数内部。条件断点可能会对您有所帮助。即,哪个实例?我假设您的类有多个构造函数?我不相信有条件断点存储在对象中的东西,用于跟踪创建对象时使用了哪个构造函数。一旦调用了构造函数并设置了字段,构造函数就消失了——它不会留下自己的记录。听起来您需要让调试器捕获所有构造函数调用,并跟踪哪个构造函数用于哪个对象我不知道如何使用这个调试器。也许其他人知道?如果你描述一下你的最终目标可能会更好-知道被调用的构造函数你想实现什么?@ajb不,我的类只有一个构造函数。我知道这个方法,但很难。有可能自动化吗?我知道,这些ID是aut由eclipse自动分配给实例。为什么它不记得构造函数调用的行呢?对象的ID是由JVM分配的,而不是eclipse。您正在寻找的功能根本不存在;老实说,我甚至不确定它是否存在。那么如何打印它呢?我不知道用户代码是否有权访问对象ID,但是您可以打印
hashCode()
(假设您的类没有覆盖它)。
System.identityHashCode(obj)
即使覆盖了
hashCode()
,也可以工作。