遵循这个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。
答案 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并且完全指向攻击线。