我从第三方库中获取了一个类中的NullPointerException.现在我想调试整个事情,我需要知道该类所持有的对象.但在我看来,我无法在第三方的类中设置断点.
有谁知道摆脱困境的方法?当然我使用Eclipse作为我的IDE.
更新:该库是开源的.
您可以轻松地在第三方库中设置方法断点,而无需使用源.打开课程(你会得到"我没有来源"的观点).打开大纲,右键单击所需的方法,然后单击Toggle Method Breakpoint
以创建方法断点.
最有把握的方法(并最终得到实际有用的东西)是下载源(你说它是开源的),并设置另一个指向该源的"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的代码的任何内容 - 您将能够找出错误的可能性非常低.
您还可以在特定异常上设置断点.从Debug透视图中,有一个"添加Java异常断点"按钮,您可以在其中添加"NullPointerException".一旦引发此类异常,您的调试器就会暂停执行.