debugloggerui что это за программа на андроид

Debugloggerui что это за программа на андроид

Для начала приведу информацию относительно памяти телефона найденую мною на одном из сайтов.

Залез в интернет, скачал программы по очистке памяти –очищают, но сообщение остаётся. Залез в интернет, начал разбираться, выяснил, что не хватает места в Internal storage («Внутренняя память»), а все эти программы чистят RAM (ОЗУ) и для решения моей проблемы не пригодны. Сообщение «Память заполнена» вылезало при заполненности внутренней памяти телефона более 160 из 181 Мб.
Начал искать за..лей памяти Internal storage, выяснил, что это обновления Карт Google и данные Android Market. Запретил картам обновляться, перестал пользоваться Marketом. Временно помогло.

Начал удалять всё подряд, нужное, не нужное. Постепенно удалил почти всё, включая Google Maps, Android Market, Skype, и много другого, чего наустанавливал ранее (осталась только любимая игрушка жены Lines). Всё помогало временно, сообщение в конце концов вылезало снова, а удалять было больше нечего, осталось только самое необходимое.
Жена пилит – «Всё ты, со своими экспериментами»

Залез в интернет, выяснил, что доступ к Internal storage можно получить имея root права. Станцевал с бубном в течении примерно часов 10, получил на телефоне root права. Как? – не помню. В форуме всё написано, но либо у меня уже мозги не те, либо на форуме пишет народ с не теми мозгами :rolleyes:
С помощью программы Link2SD, перенёс часть программ на карту SD. Это хорошо почистило память. Хватило примерно на месяц. Через месяц СМС опять не приходят.

Начал настраивать себя на снос и переустановку системы, всё не решался >-)
Залез в интернет, выяснил, что есть такие временные файлы с расширением rm. Нашёл их в папке data\local\tmp c помощью программы RootExplorer, удалил – помогло не надолго (объём их был около 3 Мб).
Залез в папку data основательно, прошерстил её различными способами. Нашёл кучу файлов с расширением log, в названии которых присутствует слово error и название различных программ, в том числе тех, которые я удалил давно. Размер каждого из них составлял около 2 Mb, а количество – около 30 шт. Удалил их все. И, о чудо, внутренняя память заполнена 62 Мб из 181 (и телефон работает). Надолго ли? Посмотрим, такое ощущение что чистить надо постоянно.

Источник

Гайд по отладке Android-приложения: ищем баги и читаем логи

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Иногда в приложении встречаются ошибки, которые нельзя увидеть даже после запуска. Например, код компилируется, проект запускается, но результат далёк от желаемого: приложение падает или вдруг появляется какая-то ошибка (баг). В таких случаях приходится «запасаться логами», «брать в руки отладчик» и искать ошибки.

Часто процесс поиска и исправления бага состоит из трёх шагов:

Если приложение не падает и чтение логов ничего не даёт, то найти точное место ошибки в коде помогает дебаггер (отладчик) — инструмент среды разработки.

Чтобы посмотреть на логи и воспользоваться дебаггером, давайте напишем простое тестовое (и заведомо неправильное) приложение, которое даст нам все возможности для поиска ошибок.

Это будет приложение, которое сравнивает два числа. Если числа равны, то будет выводиться результат «Равно», и наоборот. Начнём с простых шагов:

Нам автоматически откроются две вкладки: activity_main.xml и MainActivity.java. Сначала нарисуем макет: просто замените всё, что есть в activity_main.xml, на код ниже:

Можете запустить проект и посмотреть, что получилось:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Теперь оживим наше приложение. Скопируйте в MainActivity этот код:

В этом коде всё просто:

Запустим приложение и введём буквы вместо чисел:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Нажмём на кнопку, и приложение упадёт! Время читать логи. Открываем внизу слева вкладку «6: Logcat» и видим:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Читать логи просто: нужно найти красный текст и прочитать сообщение системы. В нашем случае это java.lang.NumberFormatException: For input string: «f». Указан тип ошибки NumberFormatException, который говорит, что возникла какая-то проблема с форматированием числа. И дополнение: For input string: «f». Введено “f”. Уже можно догадаться, что программа ждёт число, а мы передаём ей символ. Далее в красном тексте видно и ссылку на проблемную строку: at com.example.appdebugging.MainActivity$1.onClick(MainActivity.java:26). Проблема в методе onClick класса MainActivity, строка 24. Можно просто кликнуть по ссылке и перейти на указанную строку:

Конечно, метод parseInt может принимать только числовые значения, но никак не буквенные! Даже в его описании это сказано — и мы можем увидеть, какой тип ошибки этот метод выбрасывает (NumberFormatException).

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Здесь мы привели один из примеров. Типов ошибок может быть огромное количество, все мы рассматривать не будем. Но все ошибки в Logcat’е указываются по похожему принципу:

Исправим эту ошибку и обезопасим себя от некорректного ввода. Добавим в наши поля ввода android:inputType=»number», а остальной код оставим без изменений:

Теперь можем вводить только числа. Проверим, как работает равенство: введём одинаковые числа в оба поля. Всё в порядке:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

На равенство проверили. Введём разные числа:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Тоже равно. То есть приложение работает, ничего не падает, но результат не совсем тот, который требуется. Наверняка вы и без дебаггинга догадались, в чём ошибка, потому что приложение очень простое, всего несколько строк кода. Но такие же проблемы возникают в приложениях и на миллион строк. Поэтому пройдём по уже известным нам этапам дебаггинга:

И здесь на помощь приходит отладчик. Для начала поставим точки останова сразу в трёх местах:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Чтобы поставить или снять точку останова, достаточно кликнуть левой кнопкой мыши справа от номера строки или поставить курсор на нужную строку, а затем нажать CTRL+F8. Почему мы хотим остановить программу именно там? Чтобы посмотреть, правильные ли числа сравниваются, а затем определить, в какую ветку в нашем ветвлении заходит программа дальше. Запускаем программу с помощью сочетания клавиш SHIFT+F9 или нажимаем на кнопку с жучком:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

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

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Вы в режиме дебага. Обратите внимание на две вещи:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Введём неравные числа и нажмём кнопку «РАВНО?». Программа остановилась на первой точке:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Как видим, значения именно такие, какие мы и ввели. Значит, проблема не в получении чисел из полей. Давайте двигаться дальше — нам нужно посмотреть, в правильную ли ветку мы заходим. Для этого можно нажать F8 (перейти на следующую строку выполнения кода). А если следующая точка останова далеко или в другом классе, можно нажать F9 — программа просто возобновит работу и остановится на следующей точке. В интерфейсе эти кнопки находятся здесь:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроидdebugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Остановить дебаггер, если он больше не нужен, можно через CTRL+F2 или кнопку «Стоп»:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

В нашем случае неважно, какую кнопку нажимать (F9 или F8). Мы сразу переходим к следующей точке останова программы:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Ветка правильная, то есть логика программы верна, числа firstInt и secondInt не изменились. Зато мы сразу видим, что подпись некорректная! Вот в чём была ошибка. Исправим подпись и проверим программу ещё раз.

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроидdebugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Мы уже починили два бага: падение приложения с помощью логов и некорректную логику (с помощью отладчика). Хеппи пас (happy path) пройден. То есть основная функциональность при корректных данных работает. Но нам надо проверить не только хеппи пас — пользователь может ввести что угодно. И программа может нормально работать в большинстве случаев, но вести себя странно в специфических состояниях. Давайте введём числа побольше и посмотрим, что будет:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Не сработало — программа хочет сказать, что 1000 не равна 1000, но это абсурд. Запускаем приложение в режиме отладки. Точка останова уже есть. Смотрим в отладчик:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Числа одинаковые, что могло пойти не так? Обращаем внимание на тип переменной — Integer. Так вот в чём проблема! Это не примитивный тип данных, а ссылочный. Ссылочные типы нельзя сравнивать через ==, потому что будут сравниваться ссылки объектов, а не они сами. Но для Integer в Java есть нюанс: Integer может кешироваться до 127, и если мы вводим по единице в оба поля числа до 127, то фактически сравниваем просто int. А если вводим больше, то получаем два разных объекта. Адреса у объектов не совпадают, а именно так Java сравнивает их.

Есть два решения проблемы:

Не рекомендуется менять тип этих полей в реальном приложении: числа могут приходить извне, и тип лучше оставлять прежним. Изменим то, как мы сравниваем числа:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Всё работает. Наконец-то! Хотя… Давайте посмотрим, что будет, если пользователь ничего не введёт, но нажмёт на кнопку? Приложение опять упало… Смотрим в логи:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Опять NumberFormatException, при этом строка пустая. Давайте поставим точку останова на 26-й строке и заглянем с помощью отладчика глубже.

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Нажмём F8 — и перейдём в глубины операционной системы:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Интересно! Давайте обернём код в try/catch и посмотрим ошибке в лицо. Если что, поправим приложение. Выделяем код внутри метода onClick() и нажимаем Ctrl+Alt+T:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Выбираем try / catch, среда разработки сама допишет код. Поставим точку останова. Получим:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Запускаем приложение и ловим ошибку:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Действительно, как и в логах, — NumberFormatException. Метод parseInt выбрасывает исключение, если в него передать пустую строку. Как обрабатывать такую проблему — решать исключительно вам. Два самых простых способа:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Теперь-то точно всё в порядке! Хотя профессиональным тестировщикам это приложение никто не отдавал: поищете ещё ошибки? 🙂

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Иногда в приложении встречаются ошибки, которые нельзя увидеть даже после запуска. Например, код компилируется, проект запускается, но результат далёк от желаемого: приложение падает или вдруг появляется какая-то ошибка (баг). В таких случаях приходится «запасаться логами», «брать в руки отладчик» и искать ошибки.

Часто процесс поиска и исправления бага состоит из трёх шагов:

Если приложение не падает и чтение логов ничего не даёт, то найти точное место ошибки в коде помогает дебаггер (отладчик) — инструмент среды разработки.

Чтобы посмотреть на логи и воспользоваться дебаггером, давайте напишем простое тестовое (и заведомо неправильное) приложение, которое даст нам все возможности для поиска ошибок.

Это будет приложение, которое сравнивает два числа. Если числа равны, то будет выводиться результат «Равно», и наоборот. Начнём с простых шагов:

Нам автоматически откроются две вкладки: activity_main.xml и MainActivity.java. Сначала нарисуем макет: просто замените всё, что есть в activity_main.xml, на код ниже:

Можете запустить проект и посмотреть, что получилось:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Теперь оживим наше приложение. Скопируйте в MainActivity этот код:

В этом коде всё просто:

Запустим приложение и введём буквы вместо чисел:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Нажмём на кнопку, и приложение упадёт! Время читать логи. Открываем внизу слева вкладку «6: Logcat» и видим:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Читать логи просто: нужно найти красный текст и прочитать сообщение системы. В нашем случае это java.lang.NumberFormatException: For input string: «f». Указан тип ошибки NumberFormatException, который говорит, что возникла какая-то проблема с форматированием числа. И дополнение: For input string: «f». Введено “f”. Уже можно догадаться, что программа ждёт число, а мы передаём ей символ. Далее в красном тексте видно и ссылку на проблемную строку: at com.example.appdebugging.MainActivity$1.onClick(MainActivity.java:26). Проблема в методе onClick класса MainActivity, строка 24. Можно просто кликнуть по ссылке и перейти на указанную строку:

Конечно, метод parseInt может принимать только числовые значения, но никак не буквенные! Даже в его описании это сказано — и мы можем увидеть, какой тип ошибки этот метод выбрасывает (NumberFormatException).

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Здесь мы привели один из примеров. Типов ошибок может быть огромное количество, все мы рассматривать не будем. Но все ошибки в Logcat’е указываются по похожему принципу:

Исправим эту ошибку и обезопасим себя от некорректного ввода. Добавим в наши поля ввода android:inputType=»number», а остальной код оставим без изменений:

Теперь можем вводить только числа. Проверим, как работает равенство: введём одинаковые числа в оба поля. Всё в порядке:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

На равенство проверили. Введём разные числа:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Тоже равно. То есть приложение работает, ничего не падает, но результат не совсем тот, который требуется. Наверняка вы и без дебаггинга догадались, в чём ошибка, потому что приложение очень простое, всего несколько строк кода. Но такие же проблемы возникают в приложениях и на миллион строк. Поэтому пройдём по уже известным нам этапам дебаггинга:

И здесь на помощь приходит отладчик. Для начала поставим точки останова сразу в трёх местах:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Чтобы поставить или снять точку останова, достаточно кликнуть левой кнопкой мыши справа от номера строки или поставить курсор на нужную строку, а затем нажать CTRL+F8. Почему мы хотим остановить программу именно там? Чтобы посмотреть, правильные ли числа сравниваются, а затем определить, в какую ветку в нашем ветвлении заходит программа дальше. Запускаем программу с помощью сочетания клавиш SHIFT+F9 или нажимаем на кнопку с жучком:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

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

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Вы в режиме дебага. Обратите внимание на две вещи:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Введём неравные числа и нажмём кнопку «РАВНО?». Программа остановилась на первой точке:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Как видим, значения именно такие, какие мы и ввели. Значит, проблема не в получении чисел из полей. Давайте двигаться дальше — нам нужно посмотреть, в правильную ли ветку мы заходим. Для этого можно нажать F8 (перейти на следующую строку выполнения кода). А если следующая точка останова далеко или в другом классе, можно нажать F9 — программа просто возобновит работу и остановится на следующей точке. В интерфейсе эти кнопки находятся здесь:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроидdebugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Остановить дебаггер, если он больше не нужен, можно через CTRL+F2 или кнопку «Стоп»:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

В нашем случае неважно, какую кнопку нажимать (F9 или F8). Мы сразу переходим к следующей точке останова программы:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Ветка правильная, то есть логика программы верна, числа firstInt и secondInt не изменились. Зато мы сразу видим, что подпись некорректная! Вот в чём была ошибка. Исправим подпись и проверим программу ещё раз.

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроидdebugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Мы уже починили два бага: падение приложения с помощью логов и некорректную логику (с помощью отладчика). Хеппи пас (happy path) пройден. То есть основная функциональность при корректных данных работает. Но нам надо проверить не только хеппи пас — пользователь может ввести что угодно. И программа может нормально работать в большинстве случаев, но вести себя странно в специфических состояниях. Давайте введём числа побольше и посмотрим, что будет:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Не сработало — программа хочет сказать, что 1000 не равна 1000, но это абсурд. Запускаем приложение в режиме отладки. Точка останова уже есть. Смотрим в отладчик:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Числа одинаковые, что могло пойти не так? Обращаем внимание на тип переменной — Integer. Так вот в чём проблема! Это не примитивный тип данных, а ссылочный. Ссылочные типы нельзя сравнивать через ==, потому что будут сравниваться ссылки объектов, а не они сами. Но для Integer в Java есть нюанс: Integer может кешироваться до 127, и если мы вводим по единице в оба поля числа до 127, то фактически сравниваем просто int. А если вводим больше, то получаем два разных объекта. Адреса у объектов не совпадают, а именно так Java сравнивает их.

Есть два решения проблемы:

Не рекомендуется менять тип этих полей в реальном приложении: числа могут приходить извне, и тип лучше оставлять прежним. Изменим то, как мы сравниваем числа:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Всё работает. Наконец-то! Хотя… Давайте посмотрим, что будет, если пользователь ничего не введёт, но нажмёт на кнопку? Приложение опять упало… Смотрим в логи:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Опять NumberFormatException, при этом строка пустая. Давайте поставим точку останова на 26-й строке и заглянем с помощью отладчика глубже.

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Нажмём F8 — и перейдём в глубины операционной системы:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Интересно! Давайте обернём код в try/catch и посмотрим ошибке в лицо. Если что, поправим приложение. Выделяем код внутри метода onClick() и нажимаем Ctrl+Alt+T:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Выбираем try / catch, среда разработки сама допишет код. Поставим точку останова. Получим:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Запускаем приложение и ловим ошибку:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Действительно, как и в логах, — NumberFormatException. Метод parseInt выбрасывает исключение, если в него передать пустую строку. Как обрабатывать такую проблему — решать исключительно вам. Два самых простых способа:

debugloggerui что это за программа на андроид. Смотреть фото debugloggerui что это за программа на андроид. Смотреть картинку debugloggerui что это за программа на андроид. Картинка про debugloggerui что это за программа на андроид. Фото debugloggerui что это за программа на андроид

Теперь-то точно всё в порядке! Хотя профессиональным тестировщикам это приложение никто не отдавал: поищете ещё ошибки? 🙂

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *