如何解释Logcat

时间:2011-05-19 21:50:23

标签: android logcat

有谁能告诉我应该如何阅读Logcat中的错误?我想知道我的问题在哪里。

目前,我试图阅读它,但找不到崩溃的原因。

这是我不明白的Logcat:

05-18 18:29:44.160: ERROR/AndroidRuntime(2145): FATAL EXCEPTION: main
05-18 18:29:44.160: ERROR/AndroidRuntime(2145): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.paad.whereami/com.paad.whereami.WhereAmI}: java.lang.NullPointerException
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.os.Looper.loop(Looper.java:130)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.main(ActivityThread.java:3683)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at java.lang.reflect.Method.invokeNative(Native Method)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at java.lang.reflect.Method.invoke(Method.java:507)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at dalvik.system.NativeStart.main(Native Method)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145): Caused by: java.lang.NullPointerException
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.paad.whereami.WhereAmI.updateWithNewLocation(WhereAmI.java:290)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

2 个答案:

答案 0 :(得分:30)

在这种情况下,日志的第二个“部分”对您来说非常重要。

  

引起:   java.lang.NullPointerException

这意味着您代码中的某个位置设置为null,并且您尝试使用它,就好像它不是。

接下来的几行告诉您代码中的哪个位置可以找到错误。

  

at com.paad.whereami.WhereAmI.updateWithNewLocation(WhereAmI.java:290)
  at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)

这应该意味着您有一个名为updateWithNewLocation的方法,您在第216行从onCreate调用。错误来自此方法第290行。请查看第290行中的第290行。你的代码。无论你想在该行上做什么都会导致异常,因为null不应该是。{/ p>

答案 1 :(得分:3)

<强> DOCS

Android中用于收集/分析日志的基本工具是logcat。

HERE是Android关于logcat的页面

如果你使用android Studio,你也可以查看LINK

<强>捕获

基本上,您可以使用以下命令手动捕获logcat(或者只检查AndroidStudio中的AndroidMonitor窗口):

adb logcat

您可以添加许多参数来帮助您过滤和显示您想要的消息...这是个人的...我总是使用下面的命令来获取消息时间戳:< / p>

adb logcat -v time

您可以将输出重定向到文件并在文本编辑器中进行分析。

<强>分析

您的应用程序崩溃,您收到如下错误:

05-18 18:29:44.160: ERROR/AndroidRuntime(2145): FATAL EXCEPTION: main
05-18 18:29:44.160: ERROR/AndroidRuntime(2145): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.paad.whereami/com.paad.whereami.WhereAmI}: java.lang.NullPointerException
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.os.Looper.loop(Looper.java:130)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.main(ActivityThread.java:3683)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at java.lang.reflect.Method.invokeNative(Native Method)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at java.lang.reflect.Method.invoke(Method.java:507)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at dalvik.system.NativeStart.main(Native Method)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145): Caused by: java.lang.NullPointerException
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.paad.whereami.WhereAmI.updateWithNewLocation(WhereAmI.java:290)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-18 18:29:44.160: ERROR/AndroidRuntime(2145):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

这部分日志向您展示了很多信息:

何时

问题发生时:05-18 18:29:44.160

检查问题发生的时间非常重要...您可能会在日志中发现多个错误...您必须确保检查正确的消息:)

哪个应用

崩溃的应用:com.paad.whereami

这样,您就知道哪个应用程序崩溃了(以确保您正在检查有关邮件的日志)

哪个错误

错误:java.lang.NullPointerException

NULL指针异常错误

导致此错误的文件

通常,我们只读取堆栈跟踪的第一行。但是,您的日志是我们需要检查整个日志的一个很好的示例。在下面的行中,我们可以看到发生了空指针:

Caused by: java.lang.NullPointerException
    at com.paad.whereami.WhereAmI.updateWithNewLocation(WhereAmI.java:290)
    at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)

文件WhereAmI.java中的错误发生在updateWithNewLocation()方法内的第290行(堆栈跟踪显示发生错误的行)

<强>栈跟踪

您可以看到名为updateWithNewLocation()的方法。这很有用,因为有时候,错误是在调用方法中产生的。在您的示例中,它被称为:

at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)

等...

<强>概述

这只是一个概述...并非所有日志都很简单等...只是分享想法并为您提供入门级信息......

我希望我能帮助你... 此致