【问题标题】:How to see the crash reason in Eclipse debugger如何在 Eclipse 调试器中查看崩溃原因
【发布时间】:2011-11-12 08:01:07
【问题描述】:

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

对象 o = null; o.toString();

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

编辑。也许 Android UI 框架有自己的异常处理机制,这会阻止我立即在代码中看到异常?类似的事情发生在其他 UI 框架中,例如 WinForms、Qt、wxWidgets。

【问题讨论】:

    标签: android eclipse debugging


    【解决方案1】:

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

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

    您还可以设置“Java 异常断点”,这样只要有异常,执行就会中断。

    【讨论】:

    • 请给我更多关于设置“Java异常断点”的细节,也许这就是我要找的。​​span>
    • 去运行 |添加 Java 异常断点。在那里,您可以设置要中断的特定异常或所有异常。 from eclipse .org
    • 谢谢,“Java 异常断点”是有用的信息,当我知道未处理的异常类型时可以提供帮助。
    • 您在 Logact 中看到您的应用程序的任何痕迹吗?
    • 是的,我可以看到自己的日志消息。
    【解决方案2】:

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

    【讨论】:

    • 执行 o.ToString 行时,LogCat 窗口没有任何新内容。
    • 您在 Logcat 中看不到任何内容?
    • LogCat 窗口正在工作,但是当我执行此行时没有向其中添加新信息。
    【解决方案3】:

    试试这样的...

    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 输出将为您提供一个良好的开端。

    【讨论】:

    • 谢谢,我知道异常处理,但在这里我想了解如何在调试器中处理未处理的异常。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多