Как интерпретировать 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)

person moe    schedule 19.05.2011    source источник


Ответы (2)


Вторая «часть» вашего журнала будет тем, что важно для вас в данном случае.

Причина: 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 не должно быть.

person FoamyGuy    schedule 19.05.2011

ДОКУМЕНТЫ

Основным инструментом Android для сбора/анализа журналов является logcat.

ЗДЕСЬ — это страница Android о logcat.

Если вы используете Android Studio, вы также можете проверить эту ССЫЛКУ.

Захват

По сути, вы можете ВРУЧНУЮ захватить logcat с помощью следующей команды (или просто проверьте окно AndroidMonitor в AndroidStudio):

adb logcat

Есть много параметров, которые вы можете добавить к команде, которая поможет вам отфильтровать и отобразить сообщение, которое вы хотите... Это личное... Я всегда использую команду ниже, чтобы получить метку времени сообщения:

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)

так далее....

Обзор

Это был просто обзор... Не все журналы просты и т.д... Это просто чтобы поделиться идеей и предоставить вам информацию начального уровня...

Надеюсь, я смог вам чем-то помочь... С уважением

person W0rmH0le    schedule 14.07.2016