如何在Eclipse中的第三方库中设置断点?

我从第三方库中得到一个类的NullPointerException。 现在我想debugging整个事情,我需要知道类从哪个对象。 但是在我看来,我不能在第三方的类中设置断点。

有没有人知道我的麻烦出路? 当然,我使用Eclipse作为我的IDE。

更新:库是开源的。

要做到这一点的最有把握的方法(最后是实际有用的东西)是下载源代码(你说它是开源的),并设置另一个指向该源代码的“Java项目”。

为此,请将源代码下载并解压到系统的某个位置。 点击“文件” – >“新build” – >“Java项目”。 在下一个对话框中,给它一个项目名称并select“从现有源创build项目”。 浏览到开源库的根目录。

假设项目中所需的所有附加库都包含在您下载的项目中,那么Eclipse将会把所有东西都弄清楚,并为您设置构buildpath。

您需要从项目的构buildpath中移除开源jar,并将此新项目添加到项目的构buildpath中。

现在,你可以把它当作你的代码,随意debugging。

这与其他方法至less有几个问题:

  1. 你可以“附加源”的jar文件,但如果jar文件编译没有debugging信息,这仍然是行不通的。 如果jar文件是使用debugging信息( lines,source,vars …编译的,请参阅http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html和;-g选项)。

  2. 您可以添加一个“exception断点”来查看NullPointerException何时被引发,但这是一个常见的exception,并且可能会在您正在查找的exception之前引发并处理很多(数百?)次。 另外,如果没有原始源代码,您将无法真正看到抛出NullPointerException的代码的大部分内容 – 您很可能会发现错误的可能性非常低。

您可以在第三方库中轻松设置方法断点,而无需使用源代码。 只要打开课程(你会得到“我没有来源”的看法)。 打开大纲,右键单击所需的方法,然后单击Toggle Method Breakpoint以创build方法断点。

您还可以设置特定例外的断点。 从Debug的angular度,有一个button“Add Java Exception Breakpoint”,在那里你可以添加“NullPointerException”。 一旦出现这样的exception,您的debugging器就会暂停执行。

通常情况下,你应该能够设置一个中断点。 特别是如果第三方库是开源的。 但是,如果您的第三方库来自商业供应商,他们可能已经编译了closuresdebugging标志的源代码。 这将使你无法debugging到它。 您的供应商可能已经将此作为混淆过程的一部分,以便无法对库进行逆向工程,或者仅仅因为最终的编译类将会更小。

只需附加源代码(或使用自动附加源代码jar的东西),然后通过双击感兴趣的行左侧以正常方式设置断点。

为了使这个工作与Maven物化的Web应用程序,我不得不做三件事情。

1)用第三方jar的源代码创build一个新的eclipse项目。

2)从pom.xml依赖关系中删除对jar的引用。

3)将新的eclipse项目添加到项目属性中的部署程序集。

4)将新的eclipse项目添加到引用第三方项目的现有项目的项目“属性” – >“Java构buildpath” – >“项目”中。

如果第三个项目已经正确添加到你的Maven仓库中,那么Maven将自动下载适当的源代码,并让你添加断点而不必执行上述任何步骤。 但是,我已经知道,你不能总是依靠这个。