Как интерпретировать 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)
Ответы
Ответ 1
Вторая "часть" вашего журнала будет тем, что важно для вас в этом случае.
Вызвано: 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
, которое не должно быть.
Ответ 2
DOCS
Основным инструментом Android для сбора/анализа журналов является logcat.
ЗДЕСЬ - это страница Android о logcat
Если вы используете android Studio, вы также можете проверить этот LINK.
Захват
В принципе, вы можете MANUALLY захватить 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
(stacktrace показывает строку, в которой произошла ошибка)
StackTrace
Вы можете увидеть, какой метод называется updateWithNewLocation()
. Это полезно, потому что иногда ошибка вызывалась при вызове методов. В вашем примере он был вызван:
at com.paad.whereami.WhereAmI.onCreate(WhereAmI.java:216)
и т.д....
Обзор
Это был просто обзор... Не все журналы простые и т.д. Это просто поделиться идеей и предоставить вам информацию начального уровня...
Надеюсь, я смогу помочь вам...
Отношения