我有一个小项目,当在 Eclipse 调试器中运行时,它似乎总是停在 FileInputStream.class 第 106 行,文件被打开。没有设置断点,但 Eclipse 的行为就像我在这里设置了断点一样。如果我清除所有断点,它仍然会发生。
我在同一个 Eclipse 工作区中有第二个更大的项目,它没有遇到这个问题。
我刚刚将较小的项目从我的旧 Linux 机器上(我在 Europa Eclipse 中开发并遇到了这个问题)移到了我的新 Windows 机器上,在 Ganymede Eclipse 中我仍然看到该问题。该问题跨操作系统和跨 Eclipse 版本仍然存在,但显然不是跨项目。我不明白!我搜索了该项目目录中的每个文件,但找不到任何可能以某种方式指示 Eclipse 在 FileInputStream 中停止的文件。
更多信息:明显的断点实际上不是 FileInputStream 的第 106 行;它似乎是 FileNotFoundException 的异常断点,从 FileInputStream 中的该行调用的本机代码抛出。但同样,我似乎根本没有设置任何断点。异常断点是否在其他地方定义?
您是否尝试取消选择
Window > Preferences > Java > Debug : Suspend execution on uncaught exceptions
? (as 在这个线程中提到 http://web.archive.org/web/20080913140934/http://dev.eclipse.org/newslists/news.eclipse.tools.jdt/msg20144.html, 例如)
为什么 Eclipse 会这样工作?
It 追溯到2002年 http://dev.eclipse.org/mhonarc/lists/jdt-debug-dev/msg00077.html,当断点对象层次结构被剥离时。
为了使用旧 API 设置断点,客户端需要 Java 模型对象 - 例如IType
, IField
, etc.
使用新的 API,调试模型所需的只是类型名称、字段名称等。
这允许客户端在 Java 模型对象不可用时设置断点。
客户端现在指定与断点关联的资源(在我们将其限制为关联的 Java 模型资源之前)。
断点现在也可以“隐藏”。也就是说,它们不需要向断点管理器注册。
断点也可以有选择地保留(标记仅允许保留所有/不保留标记类型)。
这使得调试模型更加灵活,并为客户提供了更多构建块。
这也简化了我们 Java 调试实现的某些部分 - 例如,的特点“suspend on any uncaught exception
”,只需为名为“的类型设置一个断点java.lang.Throwable
”,而不是具体的IType
在一个具体的项目中.
断点未向断点管理器注册(即hidden) - 仅由一位客户知道和使用.
另一个例子是“run to line breakpoint
". The IJavaRunToLineBreakpoint
已被删除,因为不再需要其特殊功能。现在,Java 调试 ui 只是创建一个隐藏的、非持久的“行断点”,并且命中计数为 1。这是向客户端提供构建块的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)