Как интерпретировать 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 ответа
Вторая "часть" вашего журнала будет важна для вас в данном случае.
Вызванный:
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
этого не должно быть.
DOCS
Основным инструментом 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)
так далее....
обзор
Это был просто обзор... Не все журналы просты и т. Д... Это просто для того, чтобы поделиться идеей и предоставить вам информацию начального уровня...
Я надеюсь, что смогу вам как-нибудь помочь... С уважением