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

时间:2008-12-16 09:42:20

标签: java eclipse debugging breakpoints

我从第三方库中获取了一个类中的NullPointerException。现在我想调试整个事情,我需要知道该类所持有的对象。但在我看来,我无法在第三方的类中设置断点。

有谁知道摆脱困境的方法?当然我正在使用Eclipse作为我的IDE。

更新:该库是开源的。

6 个答案:

答案 0 :(得分:62)

您可以在没有源的情况下轻松地在第三方库中设置方法断点。打开课程(你会得到“我没有来源”的观点)。打开大纲,右键单击所需的方法,然后单击Toggle Method Breakpoint以创建方法断点。

答案 1 :(得分:34)

最有把握的方法(并最终得到实际有用的东西)是下载源代码(你说它是开源的),然后设置另一个指向该源代码的“Java Project”

为此,请在您的系统上的某处下载并解压缩源代码。点击“文件” - >“新建” - >“Java项目”。在下一个对话框中,为其指定项目名称,然后选择“从现有源创建项目”。浏览到开源库的根位置。

假设项目所需的所有其他库都包含在您下载的项目中,Eclipse将会解决所有问题,并为您设置构建路径。

您需要从项目的构建路径中删除开源jar,并将此新项目添加到项目的构建路径中。

现在,您可以将其视为您的代码,并随意调试。

这至少解决了其他方法的几个问题:

  1. 您可以将“附加源”附加到jar文件,但如果编译的jar文件没有调试信息,则仍然无法正常工作。如果jar文件是使用调试信息编译的(lines,source,vars ...请参阅http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html-g选项)。

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

答案 2 :(得分:6)

您还可以在特定异常上设置断点。从Debug透视图中,有一个“添加Java异常断点”按钮,您可以在其中添加“NullPointerException”。一旦引发异常,您的调试器就会暂停执行。

答案 3 :(得分:1)

通常,您应该能够设置断点。特别是如果第三方库是开源的。但是,如果您的第三方lib来自商业供应商,他们可能已经关闭了调试标志来编译源。这将使您无法调试它。您的供应商可能已经将此作为混淆过程的一部分,因此无法对库进行反向工程,或者只是因为最终编译的类会更小。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

为了使用maven物化网络应用程序,我必须做三件事。

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

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

3)在项目属性中将新的eclipse项目添加到Deployment Assembly。

4)将新的eclipse项目添加到项目Properties - > Java构建路径 - >引用第三方项目的现有项目的项目。

如果第3个项目已经正确地添加到您的maven存储库,使用源代码,maven将自动下载相应的源代码并允许您添加断点,而无需执行上述任何步骤;但是,我了解到你不能总是指望这一点。