我从第 3 方库的类中获取 NullPointerException。现在我想调试整个事情,我需要知道类是从哪个对象保存的。但在我看来,我无法在第 3 方的课程中设置断点。
有谁知道摆脱我的麻烦的方法吗?当然,我使用 Eclipse 作为我的 IDE。
更新:图书馆是开源的。
原文由 boutta 发布,翻译遵循 CC BY-SA 4.0 许可协议
我从第 3 方库的类中获取 NullPointerException。现在我想调试整个事情,我需要知道类是从哪个对象保存的。但在我看来,我无法在第 3 方的课程中设置断点。
有谁知道摆脱我的麻烦的方法吗?当然,我使用 Eclipse 作为我的 IDE。
更新:图书馆是开源的。
原文由 boutta 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在没有源代码的情况下轻松地在 3rd 方库中设置方法断点。只需打开课程(您将获得“我没有源代码”视图)。打开大纲,右键单击所需的方法并单击 Toggle Method Breakpoint
创建方法断点。
原文由 Joachim Sauer 发布,翻译遵循 CC BY-SA 3.0 许可协议
8 回答6.5k 阅读
4 回答701 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答972 阅读✓ 已解决
最可靠的方法(并最终得到真正有用的东西)是下载源代码(你说它是开源的),并设置另一个指向该源的“Java 项目”。
为此,请下载源代码并将其解压缩到系统的某个位置。点击“文件”->“新建”->“Java项目”。在下一个对话框中,为其指定项目名称并选择“从现有源创建项目”。浏览到开源库的根位置。
假设项目所需的所有附加库等都包含在您下载的项目中,Eclipse 将解决所有问题并为您设置构建路径。
您需要从项目的构建路径中删除开源 jar,并将这个新项目添加到项目的构建路径中。
现在,您可以将其视为您的代码,并随意调试。
这至少解决了其他方法的几个问题:
您可以将源“附加”到 jar 文件,但是如果 jar 文件是在没有调试信息的情况下编译的,这仍然行不通。如果 jar 文件是使用调试信息编译的(
lines,source,vars
…请参阅 http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html ,以及-g
选项)。您可以添加一个“异常断点”以查看何时引发 NullPointerException,但这是一个常见的异常,并且很可能会在您要查找的异常之前被引发和处理很多次(数百次?)。另外,如果没有原始来源,您将无法真正看到有关抛出 NullPointerException 的代码的任何信息 - 您能够找出问题所在的可能性非常低。