如何在Eclipse调试器中查看崩溃原因

时间:2011-11-12 08:01:08

标签: android eclipse debugging

遵循这个Android教程:http://developer.android.com/resources/tutorials/hello-world.html我添加了两行应该导致空指针异常:

Object o = null;
o.toString();

现在我在第二行设置断点并启动调试器。当调试器中断时,我单击“跳过”并且应用程序崩溃。但是,我在调试器中看不到任何有用的信息。调试窗口显示ActivityThread.performLaunchActivity,Source窗口显示“No source found”。我没有在任何Eclipse调试器窗口中看到有关异常,空指针等的任何信息,也没有看到任何指向导致崩溃的代码行的信息。那么,我错过了什么?

修改即可。也许Android UI框架有自己的异常处理机制,这阻止我立即在我的代码中看到异常?像这样的东西发生在另一个UI框架中,比如WinForms,Qt,wxWidgets。

4 个答案:

答案 0 :(得分:3)

发生异常后,您应该检查Logcat窗口以获取详细信息:在那里您可以找到导致异常所在代码行的整个堆栈。在某些情况下,异常会发生在其他一些类(不是你的)中 - 然后你应该在堆栈中查找你的包/类名,找到otu你是否“负责”它。

相应的输出不会立即出现在Logcat中 - 让它运行一段时间(或直到它崩溃)。

此外,您可以设置“Java异常断点”,以便在出现异常时执行将中断。

答案 1 :(得分:2)

您可以在LogCat中看到错误。 Window->Show View->other->Logcat

答案 2 :(得分:1)

尝试这样的事情......

try {
    Object o = null;
    o.toString();
}
catch (Exception e) {
    e.printStackTrace();
}

...并在eclipse中使用DDMS透视图。

理想情况下,您希望捕获特定的异常,因此catch块将是......

catch (NullPointerException npe {
    npe.printStackTrace();
}

...但是在我的第一个例子中为Exception执行'catch all'并使用eclipse DDMS透视图来查看logcat输出将为您提供良好的开端。

答案 3 :(得分:1)

最后,我在“Breakpoints”调试器窗口中找到了有用的信息。它显示NullPointerException并且完全指向攻击线。