如何解释Logcat

moe*_*moe 15 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)
Run Code Online (Sandbox Code Playgroud)

Foa*_*Guy 31

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

引起: java.lang.NullPointerException

这意味着在代码中的某个地方设置了某些内容,null并且您尝试使用它,就好像它不是.

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

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

这应该意味着你有一个名为updateWithNewLocation你onCreate在第216行调用的方法.错误来自第290行的这个方法.看看代码中的第290行.无论你想在那条线上做什么都会导致异常,因为有些东西null不应该.


W0r*_*0le 5

文档

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

这里是关于 logcat 的 Android 页面

如果您使用 android Studio,您还可以查看此LINK。

捕捉

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

adb logcat
Run Code Online (Sandbox Code Playgroud)

有很多参数可以添加到命令中,这些参数可以帮助您过滤和显示所需的消息......这是个人的......我总是使用下面的命令来获取消息时间戳:

adb logcat -v time
Run Code Online (Sandbox Code Playgroud)

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

分析

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

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)
Run Code Online (Sandbox Code Playgroud)

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

什么时候

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

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

哪个应用程序

崩溃的应用程序: com.paad.whereami

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

哪个错误

错误: java.lang.NullPointerException

空指针异常错误

哪个文件导致此错误

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

Caused by: java.lang.NullPointerException
    at com.paad.whereami.WhereAmI.updateWithNewLocation(WhereAmI.java:290)
    at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)
Run Code Online (Sandbox Code Playgroud)

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

堆栈跟踪

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

at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)
Run Code Online (Sandbox Code Playgroud)

等等....

概述

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

我希望我能以某种方式帮助你......问候