Страницы

Поиск по вопросам

среда, 10 октября 2018 г.

У меня просят стектрейс (Stack Trace) или логкат (Logcat). Что это?

Я разрабатываю приложение и оно не работает. На экране появляется надпись "Unfortunately App has stopped" ("Приложение остановлено") и ничего не происходит.
Задав вопрос, у меня спросили стектрейс в логкат, но я не знаю, что это и где его взять?


Ответ

Для того, чтобы получить так нужный для решения проблемы стектрейс, рассмотрим скриншот:

Теперь делаем следующее. После того, как на экране появилась пессимистичная табличка, что приложение остановилось и работать дальше не будет, в Android Studio нажимаем на вкладку внизу с названием Logcat (пункт 1 на скриншоте) или на быструю клавишу 6. При этом мы должны убедится, что соединение IDE с устройством у нас установлено, а лог мы читаем из потока нашего тестируемого приложения (пункт 2 на скриншоте) - здесь мы видим, что подключены к эмулятору Nexus S к процессу com.examle.raschet - это наше неработающее приложение.
Но лог очень большой, как понять, что именно нам нужно показать другим (или прочитать самому), чтобы понять, в чем причина остановки приложения?
В этом нам помогут ключевые слова, подчеркнутые желтой линией: exception и caused by, так же верным признаком, что то, что нам нужно рядом, является ссылка синего цвета (пункт 3 на скриншоте), обычно с названием класса, в котором появилась ошибка (ссылки серого цвета ведут к системным классам и в решении нашей проблемы носят информационный характер, так как править системные классы мы все равно не будем) и PID процесса нашего приложения в логе (здесь 3867, смотреть в пункт 2 на скриншоте). Здесь нам указывают, что проблема на строке 19 (пункт 4 на скриншоте), если кликнуть мышью на эту синюю ссылку, то мы перейдем к проблемной строке в редакторе кода.
Теперь нам нужно скопировать весь блок, начиная от строки с датой и временем, где есть exception и ссылка на наш класс с ошибкой и до следующей строки с датой и временем (от отметки 03-13 03:18:02.654 до отметки 03-13 03:18:02.656). Так же необходимо добавить в вопрос и ту строку кода, на которую ссылается стектрейс (у нас это строка 19), если проблему вы будете решать не самостоятельно.
Данный ответ не ставит целью объяснить, как решить проблему, а только как получить лог для ее решения. Попытаться самому разобраться, что написано в стектрейсе вы можете, почитав этот замечательный ответ

Комментариев нет:

Отправить комментарий