Как сделать дебаг андроид студия
Общая информация об отладке в Android Studio
Студия позволяет отлаживать приложения на эмуляторе и на реальных устройствах. Вы можете просматривать системный журнал логов, устанавливать точки останова, проверять значения переменных и вычислять выражения во время работы, делать скриншоты и видеозаписи.
Когда вы разрабатываете приложение, то студия собирает отладочную версию программы, соединяется с устройством/эмулятором, устанавливает и запускает её.
Android Studio откроет окно Debug. Можно открыть его вручную через кнопку 5: Debug в нижней части среды разработки. Окно показывает потоки и переменные в вкладке Debugger, статус устройства в вкладке Console и системные логи в вкладке Logcat.
Если приложение уже запущено, то необязательно его перезапускать для работы в отладочном режиме. Вы можете нажать на кнопку Attach debugger to Android proccess , которая идёт сразу после кнопку с жучком.
В вкладке Logcat вы видите системные сообщения, включая сообщения от вашей программы, если вы использовали их своём коде. Для записи логов используется класс Log. Подробнее о нём в отдельной статье.
Точки останова (Breakpoints)
Точки останова позволяет приостановить выполнение программы на нужной строчке кода, проверить значение переменных, запустить выражение и продолжать выполнение кода строчка за строчкой. Позволяет выявить ошибки, которые не удаётся вычислить простым просмотром кода.
Откройте свой исходник, определите строку кода, в которой хотите поставить точку останова и щёлкните по ней. Строка окрасится в жёлтый цвет. Щёлкните в левой части редактора кода в серой области. В этом месте появится красный кружок (повторный щелчок уберёт его), а строка примет розовый цвет. Точку останова можно ставить не только для исполняемого оператора, но и на комментарии.
Запустите приложение в отладочном режиме. Когда выполнение программы дойдёт до установленной точки останова, то студия прекратит дальнейшее выполнение приложения, кружок станет ещё более красным и строка будет выделена. И затем вы можете попытаться выявить причину ошибки.
После того, как вы установили точки останова, щёлкните кнопку Rerun для повторного запуска программы. Когда выполнение кода дойдёт до установленной точки останова, студия выполнит паузу и подсветить строку кода. Панель Debug позволит проверить переменную и выполнить код шаг за шагом.
Отслеживание потребления памяти
Студия позволяет также отслеживать потребления памяти объектами и показывает, какие классы и потоки используют объекты.
Запустите студия в отладочном режиме, щёлкните 6: Android, чтобы открыть панель Android DDMS. Выберите вкладку Devices | logcat, выберите ваше устройство из выпадающего списка, выберите вашу программу по имени пакета из списка запущенных программ.
Щёлкните кнопку Start Allocation Tracking . Начинайте пользоваться программой.
Повторно нажмите на предыдущую кнопку Stop Allocation Tracking. Студия покажет объекты, выделенные системой для работы.
Android Device Monitor
Скриншоты и видео
Вы можете делать скриншоты и видео работающего приложения.
Запустите приложение и откройте панель 6: Android. Щёлкните кнопку Screen Capture в левой части панели.
По такому же принципу можно сделать видеозапись через кнопку
Android Studio Debugging: Продвинутый уровень
Часть вторая
Artem Shevchenko
Jan 11, 2019 · 4 min read
Перед погружением
Мы продолжаем изучать полезный инструмент для любого разработчика — отладчик, он же debbuger.
В первой части мы говорили о самых базовых понятиях отладки.
В этой статье мы пойдем дальше, к более продвинутым возможностям. Кстати, если я что-то упущу, или у вас есть чем дополнить эту статью — смело пишите мне и я буду очень рад вашей поддержке!
И я рекомендую прочитать первую часть перед изучением этой статьи, если вы еще не читали ее.
Android Studio Debugging: Базовые понятия и возможности
Часть первая, основы
medium.com
Проверка выражения
Суть этой функции состоит в том, что в момент остановки можно выполнить небольшой кусочек кода на основании текущего состояния приложения и получить результат на экране.
До л гое время я не знал про эту возможность и пользовался различными подпорками-костылями. Вещь весьма удобная но есть вопрос…
А изменяется ли состояние объекта?
Итак, барабанная дробь…
Итак, экспериментальным путем мы выяснили, что состояние объекта меняться, и код выполняется меняя состояние в JVM. Это стоит запомнить и держать в уме.
Продвинутая работа с breakpoint’s
На первый взгляд кажется что точка остановки (breakpoint) достаточно простая вещь. Но у нее есть много полезных опций и возможностей, с которыми как минимум стоит ознакомится.
Дополнительные опции breakpoint-a
По нажатию на правую кнопку мышки на breakpoint появляется вот такое меню.
Enabled — можно включить/выключить точку остановки не удаляя ее.
Suspend — флаг для включения/выключения остановки выполнения потока во время достижения точки остановки. А еще есть возможность выбрать что остановить — выполнение только текущего потока, на котором выполняется текущая строка кода, или вообще все потоки внутри процесса приложения.
Но зачем отключать остановку на точке остановки?
Это хороший вопрос, ведь суть точки остановки — в остановке, это даже четко обозначено в названии, но тем не менее есть еще несколько режимов работы точки остановки.
Вывод сообщения в консоль
При срабатывании точки остановки в консоль можно вывести 3 варианта сообщений:
Я долго искал — где в логах сообщение о том что точка остановки сработала. Оказывается эти сообщения выводятся не в Logcat а в консоль во вкладке Debug:
Кстати, на этом скриншоте видно 2 первых типа сообщения: “точка остановки достигнута” и stack-trace.
И вариант вывода в логи результат выполнения выражения:
Использование отладчика Android Studio по максимуму
Это хитрость, о которой я узнал совсем недавно у Senior Android разработчика в моей компании, и теперь я чувствую себя несчастным, сожалея о времени, которое я провел в ожидании сборки Gradle, чтобы проверить свои изменения при написании Android приложений.
Вот типичный сценарий, который каждый Android разработчик мог бы встретить, по крайней мере, один раз в течение своего жизненного цикла разработки. У вас есть список элементов, которые вы хотите показать в ListView или RecyclerView.
Теперь, допустим, вы захотели изменить цвет текста для каждого третьего элемента в списке. Таким образом, код будет выглядеть примерно так:
Затем вы нажмёте Run и дождётесь завершения сборки и увидите ваши изменения, так?
Теперь вы бы подумали, существует ли другой путь для достижения этой же цели?
Твой выход, Android Studio! Да, нам не нужен внешний плагин или инструмент для достижения вышеупомянутой задачи и более того, нам даже не придется заново собирать проект. Вы не ослышались, мы обойдёмся без Gradle 🙂 Вот как!
Шаг 1 — Необходимо определить конфигурацию запуска
Такая конфигурация запуска позволит нам запускать наше приложение и присоединять к нему отладчик из Android Studio, а также вы сможете присоединить его к уже запущенному процессу.
Нажмите Run → Edit Configurations.
Edit Configurations»>
В верхнем левом углу диалогового окна щелкните значок «+» и выберите Android App.
Теперь дайте ему имя, мне нравится называть его Run-Only, но вы можете называть его как угодно.
Выберите модуль, который содержит код вашего приложения, в приведенном ниже скриншоте он называется app.
Важный шаг:
В разделе Installation Options выберите Nothing;
В Launch Options выберите Default Activity;
В разделе Before Launch удалите Gradle-aware Make.
Таким образом, конфигурация должна выглядеть следующим образом:
Теперь вы можете применить и сохранить эту конфигурацию. Сейчас она должна быть выбрана автоматически. Если нет, то просто выберите её из списка.
Теперь поставьте breakpoint поближе к строке, которую вы хотите проверить. В нашем случае мы разместим ее там, где мы устанавливаем текст.
Щелкните правой кнопкой мыши на breakpoint и снимите флажок Suspend (рус. приостановить).
Как только вы снимете флажок, диалог расширится и покажет больше опций.
Нам интересен раздел Evaluate and log. Мы напишем там выражение, чтобы проверить изменения в нашем элементе RecyclerView. Нажмите на маленький значок голубого цвета справа от окна ввода Evaluate and log, чтобы развернуть его до более крупного редактора, и добавьте выражение для тестирования, и нажмите Ok, а затем Done.
Теперь нажмите на иконку Debug с выбранной конфигурацией Run-Only и посмотрите на эту магию.
Приложение должно запуститься с вашей Activity по умолчанию, и вы должны увидеть внесенные там изменения. Также, если вы уделяете пристальное внимание IDE, в самом низу вы увидите только одну запускаемую задачу: Launching Activity.
Хотелось бы услышать ваши впечатления, когда вы опробуете эту хитрость!
Android Remote Debugger — удаленная отладка Android приложений
Отладка является важным этапом разработки программного обеспечения. Поиск и исправление ошибок позволяют разрабатывать качественные продукты.
В этой статье я хочу поговорить об отладке именно Android приложений. Android Studio предоставляет нам различные инструменты профилирования, такие как:
Также существует множество сторонних решений, позволяющих просматривать сетевой трафик, базы данных, shared preferences и др.
У всех этих инструментов есть преимущества и недостатки. К их минусам можно отнести следующее:
На данный момент я не нашел ни одного решения, которое объединяло бы различные инструменты отладки и устраняло бы вышеуказанные проблемы. Поэтому я разработал собственное решение.
Android Remote Debugger
Мое решение является очень простым в использовании, так как позволяет отлаживать приложение прямо в браузере, без подключения Android устройства к компьютеру. Данное решение включает в себя четыре раздела для отладки:
Работа с отладчиком
Для работы с отладчиком нужно сделать следующее:
Ниже представлены скриншоты некоторых разделов:
Logging
Database
Network
Описание разделов отладки
Для инициализации библиотеки необходимо вызвать AndroidRemoteDebugger.init(applicationContext) в коде приложения. Также можно указать дополнительные параметры с помощью AndroidRemoteDebugger.Builder :
Logging
Данный раздел позволяет просматривать логи приложения. При необходимости можно выполнять фильтрацию сообщений по приоритету, по тегам и по подстрокам. Для удобства у всех сообщений установлен свой цвет текста, в зависимости от приоритета. Все логи также можно скачать.
Также очень удобно использовать данный метод логирования совместно с библиотекой Timber (автором которой является Jake Wharton), пример:
Network
Раздел Network позволяет просматривать все сетевые запросы и ответы в компактном и расширенном виде. В компактном виде не отображаются тело и заголовки запросов. В расширенном виде вы видите всю информацию. Принцип получения данных в этом разделе практически аналогичен разделу Logging. При необходимости можно выполнить фильтрацию по HTTP коду ответа или по подстрокам. Можно также показывать только те запросы, в которых произошла ошибка. Как и в разделе Logging, все логи можно скачать.
Для работы этого раздела необходимо использовать библиотеку OkHttp3 и добавить интерцептор NetLoggingInterceptor. Для получения достоверных данных рекомендуется добавить его последним, после других интерцепторов.
Database
Данный раздел позволяет просматривать базы данных. Ничего дополнительного для его работы делать не нужно. Необходимо только выбрать базу данных и таблицу. Данные будут показываться страницами по 15 записей. Можно выполнить поиск данных, удалить записи, редактировать их. Можно также выполнить любой sql-запрос.
SharedPreferences
Данный раздел позволяет просматривать все файлы SharedPreferences. Можно выбрать любой файл и просмотреть, удалить, изменить или добавить запись. Также есть возможность удалить сам файл SharedPreferences со всеми данными. Кроме того, можно выполнить поиск по подстрокам.
Как подключить Android Remote Debugger
Добавьте в корневой build.gradle следующий репозиторий:
Добавьте в build.gradle вашего модуля следующую зависимость:
Android Remote Debugger:
Как сделать дебаг андроид студия
[Отладка с помощью эмулятора]
[Отладка через USB]
Описание процесса запуска отладки под Windows XP в Android Studio, по шагам:
2. Нужно на компьютере установить драйвер Android ADB Driver. Это можно сделать, если скачать и запустить программу UsbDriverTool-sfx.exe [4,5]. После запуска укажите папку, куда нужно распаковать утилиту, например c:\temp, утилита распакуется в папку c:\temp\UsbDriverTool\. В папке c:\temp\UsbDriverTool\AndroidUsb\ будет находиться драйвер Android ADB Driver, который нам нужен.
3. Подключите Ваш смартфон с Android через USB к компьютеру. Внимание, это важно: на смартфоне должен определиться режим «Подключен как камера (PTP)», ни в коем случае не как USB Mass Storage устройство/флешка и не Мультимедиа-устройство MTP. Компьютер обнаружит новое устройство, запустится мастер установки драйвера. Подсуньте ему папку c:\temp\UsbDriverTool\AndroidUsb.
Установить драйвер можно также с помощью утилиты UsbDriverTool.exe, которая находится в архиве [5]. Запустите эту программу при подключенном через USB Android-устройстве. На стартовом экране будет отображено устройство SAMSUNG_Android:
Выберите строку с устройством Android и нажмите кнопку Change driver type. Появится следующий экран, где будет предложено выбрать тип драйвера.
Выберите Android ADB Driver и нажмите Install. Через несколько секунд драйвер установится и будет готов к работе.
5. Запустите приложение на отладку.
[Отладка через Wi-Fi]
ADB можно запустить по каналу связи TCP/IP, для чего можно использовать подключение Wi-Fi. Отладка через Wi-Fi является необычайно удобной. Не нужны провода, и отладка программы запускается очень быстро, так же как и при отладке через USB. Означает, что при отладке можно подключить устройство через коннектор USB к зарядке или куда-то еще. Это особенно удобно, когда отлаживаемых устройств Android у Вас больше, чем портов USB, и когда Вы хотели бы тестировать Ваши последние сборки через сеть, с помощью других людей. Подробнее про adb можно прочитать в [7]. Здесь приведено пошаговое руководство, как запустить такую отладку (подразумевается, что у Вас на компьютере уже установлены Android SDK, ADB, и Вы можете осуществлять отладку программ через USB).
В ответ должно быть выведено сообщение:
Если у Вас была запущена среда Android Studio, и Вы следили за консолью Devices и логом сообщений logcat, то в этот момент увидите, что подключенное устройство Android исчезло из списка, в logcat перестали появляться новые сообщения. Сейчас Вы разрешили отладку через TCP/IP соединение с использованием порта 5555 (Вы также можете использовать любой другой свободный порт), осталось подключить ADB к устройству Android.
Итак, у нашего устройства IP-адрес 192.168.0.53. Теперь введите следующую команду:
В ответ получите сообщение:
3. Если Ваш компьютер находится в той же подсети (192.168.0/24), то теперь в среде Android Studio консоль Devices покажет подключенное устройство Android, и Вы свободно можете производить отладку точно так же, как раньше это делали через USB. Состояние моста ADB можно проверить командой:
В ответ должен быть выведен список подключенных устройств:
В Вашей среде разработки теперь доступен лог Logcat, и можно запустить на отладку Ваше разрабатываемое приложение. Будут работать следующие функции (как и при отладке через USB):
• Вывод Logcat.
• Развертывание отлаживаемого приложения на устройстве (копирование его из среды разработки в устройство).
• Отладка приложения.
• Создание скриншотов через ADB.
[Отладка на виртуальном устройстве AVD]
AVD переводится как Android Virtual Device. Программа AVD Manager позволяет создавать такие виртуальные устройства, которые Вы можете использовать при отладке своих программ. Отладка на AVD имеет свои преимущества, потому что позволяет создать множество устройств Android с разными характеристиками (разное разрешение экрана, разные версии операционной системы Android, разный объем памяти и т. п.). Однако отладка на AVD работает чрезвычайно медленно, и очень требовательна к ресурсам хостового компьютера, который запускает AVD (как по памяти, так и по процессорному времени). Ускорить отладку на AVD можно, если запускать виртуальное устройство из снапшотов (это настраивается при создании виртуального устройства), или если применить специальные приемы работы с эмулятором [6], но в любом случае отладка на реальном устройстве предпочтительнее отладки на AVD.
[LogCat]
В системе разработки Eclipse консоль LogCat открывается автоматически после запуска отлаживаемой программы.
LogCat поддерживает разные уровни вывода сообщений:
Благодаря наличию уровней сообщений их можно грубо отфильтровать по уровню. Например, вот так это делается в консоли LogCat в среде Eclipse:
Когда Вы запускаете свое приложение в режиме отладки из Eclipse, то Вы можете увидеть множество сообщений, которые появляются в окне консоли LogCat: как сообщения, отправленные Вашим приложением, так и сообщения системы и других приложений, которые работают в этот момент на Вашем устройстве.
Чтобы вывести что-то в лог, сначала определитесь, насколько критичным должно быть выводимое сообщение (должно ли оно быть в категории отладочной информации (d, Debug), или это должно быть просто информационное сообщение (i, Info), или это должно быть предупреждение (w, Warning) или это должно быть сообщение об ошибке (e, Error)? После этого используйте для вывода подходящий метод:
Первый параметр myApp предоставляет текстовую метку, которая позволяет дополнительно отфильтровать сообщения в логе. Это может оказаться полезным, когда сообщений слишком много, и найти нужное сообщение будет проще, если заранее знать её метку. В консоли LogCat Eclipse такой фильтр можно создать кнопкой с зеленым плюсиком «Add new logcat filter».
Примечание: после отладочного запуска приложения в Eclipse один такой фильтр создается автоматически по имени пакета приложения. В этот фильтр попадут сообщения, которые система Android сама сгенерирует в ответ на события, относящиеся к Вашему приложению.
и в файл Android.mk добавьте строку
После этого для вывода в LogCat можете использовать функции __android_log_vprintf и __android_log_printf. Однако эти функции напрямую вызывать достаточно неудобно, поэтому есть смысл создать для них специальный класс Log: