Использование DDMS

Ответить
=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Использование DDMS

Сообщение =bor= » 11 сен 2013, 22:37

Использование DDMS
Запуск DDMS
Как DDMS взаимодействует с помощью отладчика
Использование DDMS
Просмотр использования кучи для процесса
Отслеживание выделения памяти объектов
Работа с файловой системой эмулятора или устройства
Изучение информации потока
Начинаем метод профилирования
Используем инструмент Network Traffic
Использование LogCat
Имитация телефонных операций и геолокации

Android поставляется с инструментом отладки, называемым Dalvik Debug Monitor Server (DDMS), который обеспечивает порт-форвардинг, захват экрана на устройстве, информацию о тредах и кучах на устройстве, LogCat, информацию о процессах и состоянии радио, входящий вызов и SMS-имитацию, имитацию данных о местоположении, и многое другое. На этой странице приводится скромное обсуждение особенностей DDMS, это не исчерпывающий обзор всех функций и возможностей.

Запуск DDMS
________________________________________
DDMS интегрирован в Eclipse, а также поставляется в tools-директории SDK. DDMS работает как с эмулятором, так и с подключенным устройством. Если оба подключены и работают одновременно, DDMS по умолчанию работает эмулятором.
• Из Eclipse: нажмите Window> Open Perspective> Other ... > DDMS.
• Из командной строки: Введите ddms (или ./ddms на Mac/Linux) из tools / каталога.

Как DDMS взаимодействует с помощью отладчика
________________________________________
На платформе Android каждое приложение выполняется в собственном процессе, каждый из которых работает в своей собственной виртуальной машине (VM). Каждая виртуальная машина предоставляет уникальный порт, к которому отладчик может подключиться.
Когда стартует DDMS, он подключается к adb. Когда устройство подключено, создается служба мониторинга VM между adb и DDMS, которая уведомляет DDMS когда VM на устройстве запускается или останавливается. После того, как виртуальная машина запущена, DDMS получает идентификатор процесса виртуальной машины (PID), через adb, и открывает соединение с отладчиком виртуальной машины, через adb демона (adbd) на устройстве. DDMS теперь может общаться с VM с помощью собственного проводного протокола.
DDMS назначает порт отладки каждой виртуальной машине на устройстве. Как правило, DDMS назначает порт 8600 первой VM, следующий 8601, и так далее. Когда отладчик подключается к одному из этих портов, весь трафик передается в отладчик из связанных VM. Вы можете подключать только один отладчик к одному порту, но DDMS может работать с несколькими присоединёнными отладчиками.
По умолчанию DDMS также прослушивает другой порт отладки, DDMS "базовый порт" (8700, по умолчанию). Базовый порт является портом форвардинга, который может принимать VM трафик с любого порта отладки и направлять его в отладчик на порту 8700. Это позволяет присоединить один отладчик к порту 8700 и отлаживать все виртуальные машины на устройстве. Трафик, который направляется, определяется текущим выбранным процессом с точки зрения DDMS.
На следующем рисунке показан типичный экран DDMS в Eclipse. Если вы стартуете DDMS из командной строки, экран немного отличается, но большая часть функциональности идентична. Обратите внимание, что выделенный процесс, com.android.email , который выполняется в эмуляторе, имеет порт отладки 8700, назначенный ему, а также 8606. Это означает, что в настоящее время DDMS перенаправляет порт 8606 на статический порт отладки 8700.

Изображение
Рисунок 1. Скриншот DDMS

Если вы не используете Eclipse и ADT, читайте Configuring your IDE to attach to the debugging port для получения дополнительной информации о прикреплении отладчика.

Совет: Вы можете установить ряд предпочтений DDMS в File > Preferences. Предпочтения сохраняются в $HOME/.android/ddms.cfg.

Известные проблемы с отладкой Dalvik
Отладка приложения в Dalvik VM должна работать так же, как и в других виртуальных машинах. Однако, когда происходит выход из пошагового синхронизированного кода, курсор "текущей строки" может перескочить на последнюю строку в методе на один шаг.

Использование DDMS
________________________________________
В следующих разделах описано, как использовать DDMS и различные вкладки и панели, которые являются частью DDMS GUI. Версия Eclipse и версия для командной строки имеют незначительные различия пользовательского интерфейса, но ту же функциональность. Информацию о запуске DDMS, см. предыдущий раздел в этом документе Запуск DDMS.

Просмотр использования кучи для процесса
DDMS позволяет просматривать, сколько динамической памяти используется процессом. Эта информация полезна для отслеживания использования кучи в определенный момент времени в ходе выполнения вашего приложения.

Для просмотра использования кучи для процесса:
1. На вкладке Devices выберите процесс, для которого вы хотите увидеть информацию кучи.
2. Нажмите на кнопку Update Heap для включения информации кучи для процесса.
3. На вкладке Heap кликните Cause GC для вызова сбора мусора, которая разрешает сбор данных кучи. По завершении операции, вы увидите группы типов объектов и память, которая была выделена для каждого типа. Вы можете нажать Cause GC снова, чтобы обновить данные.
4. Нажмите на тип объекта в списке, чтобы увидеть гистограмму, которая показывает количество объектов, выделенных для конкретного размера памяти в байтах.

Отслеживание выделения памяти объектов
DDMS предоставляет функцию, позволяющую отслеживать объекты, размещённые в памяти, и увидеть, какие классы и потоки выделяются объектам. Это позволяет отслеживать в режиме реального времени, где объекты выделяются при выполнении определенных действий в приложении. Эта информация является ценной для оценки использования памяти, которая могут повлиять на производительность приложения.

Чтобы отслеживать распределение памяти объектов:
1. На вкладке Devices выберите процесс, которому вы хотите включить отслеживание.
2. На вкладке Tracker Allocation нажмите Start Tracking, чтобы начать слежение. С этого момента все, что вы делаете в вашем приложении, будет отслеживаться.
3. Нажмите Get Allocations, чтобы увидеть список объектов, которые были выделены, с тех пор как вы нажали на кнопку Start Tracking. Вы можете нажать на Get Allocations еще раз, чтобы добавить в список новые объекты, которые были выделены.
4. Чтобы остановить отслеживание или удалить данные и начать заново, нажмите кнопку Stop Tracking.
5. Нажмите на определенной строке в списке, чтобы увидеть более подробную информацию, такую как метод и номер строки кода, который соответствует объекту.

Работа с файловой системой эмулятора или устройства
DDMS предоставляет вкладку File Explorer, которая позволяет просматривать, копировать и удалять файлы на устройстве. Эта функция полезна при рассмотрении файлов, которые создаются приложением или если вы хотите передавать файлы на устройство или с устройства.

Для работы с файловой системой эмулятора или устройства:
1. На вкладке Devices выберите эмулятор, на котором вы хотите посмотреть файловую систему.
2. Чтобы скопировать файл с устройства, найдите файл в File Explorer и нажмите кнопку Pull file .
3. Чтобы скопировать файл в устройство, нажмите кнопку Push file на вкладке File Explorer.

Изучение информации потока
Вкладка Threads DDMS показывает вам в данный момент потоки для выбранного процесса.
1. На вкладке Devices выберите процесс, потоки которого вы хотите исследовать.
2. Нажмите Update Threads.
3. На вкладке Threads вы можете просмотреть информацию о потоке для выбранного процесса.

Запуск метода профилирования
Метод профилирования предназначен для отслеживания определенных метрик о методе, например, количество вызовов, время выполнения, и время, потраченное на выполнение метода. Если вы хотите более детальный контроль над тем, где собираются данные профилирования, используйте startMethodTracing() и stopMethodTracing() методы. Для получения дополнительной информации о создании журнала трассировки см. Profiling and Debugging UIs.

Перед началом метода профилирования в DDMS, будьте в курсе следующих ограничений:
• Android 1.5 устройства не поддерживаются.
• Android 2.1 и более ранние устройства должны иметь SD карту и приложение должно иметь разрешение на запись на карту памяти SD.
• Android 2.2 и более поздним устройствам не нужны карты SD. Файлы журнала трассировки передаются непосредственно вашему компу.

Для начала метода профилирования:
1. На вкладке Devices выберите процесс, которому вы хотите включить метод профилирования.
2. Нажмите Start Method Profiling.
3. Взаимодействуйте с приложением, чтобы стартовать метод, которые вы хотите профилировать.
4. Нажмите Stop Method Profiling. DDMS останавливает профилирование приложения и открывает Traceview с информацией метода профилирования, которая была собрана между временем, как вы нажали на Start Method Profiling и Stop Method Profiling.

Используем инструмент Network Traffic
В Android 4.0, DDMS (Dalvik Debug Monitor Server) включает в себя вкладку Detailed Network Usage, позволяющую отслеживать, когда ваше приложение делает сетевые запросы. Используя этот инструмент, вы можете контролировать, как и когда ваше приложение передаёт данные и оптимизировать исходный код соответствующим образом. Также можно различать разные типы трафика, применяя "тэги" сетевых сокетов перед использованием.

Эти тэги показываются на диаграмме области стека в DDMS, как показано на рисунке 2:

Изображение
Рисунок 2. Вкладка Network Usage.

Контролируя частоту передачи ваших данных, и объем данных, передаваемых во время каждого соединения, вы можете определить области приложения, которые можно сделать более эффективными для использования батареи. Как правило, вы должны смотреть на короткие всплески, которые можно отложить, или что должно вызываться позднее, передаётся заранее.

Чтобы лучше определить причину всплесков передачи, TrafficStats API позволяет пометить передачу данных, происходящих в поток; используйте setThreadStatsTag(), а затем вручную тегируйте (и снимайте тег) индивидуальные сокеты, используя tagSocket() и untagSocket(). Например:

Код: Выделить всё

TrafficStats . setThreadStatsTag ( 0xF00D ); 
TrafficStats . tagSocket ( outputSocket ); 
// Передача данных с использованием сокетов 
TrafficStats . untagSocket ( outputSocket );
Кроме того, Apache HttpClient и URLConnection API, включенные в платформу, автоматически тегируют сокеты внутренне на основе активного тега (как это определено getThreadStatsTag()). Эти API правильно тегируют/снимают тег сокетов, когда переработаны в рамках поддержания активности пулов. В следующем примере, setThreadStatsTag() назначает активному тегу 0xF00D. Там может быть только одна активная метка на поток. Это значение, которое будет возвращено getThreadStatsTag() и, следовательно, используется HttpClient для тега сокетов. Инструкция finally вызывает clearThreadStatsTag(), чтобы очистить тег.

Код: Выделить всё

TrafficStats . setThreadStatsTag (0xF00D ; 
   try { 
        / / Делаем запрос, используя HttpClient.execute() 
    }  finally { 
        TrafficStats.clearThreadStatsTag(); 
}
Тегирование сокетов поддерживается в Android 4.0, но статистика в реальном времени будет отображаться только на устройствах под управлением Android 4.0.3 или выше.

Использование LogCat
LogCat интегрирован в DDMS и выводит сообщения, которые вы выводите с использованием Log класса наряду с другими сообщениями, таких как трассировка стека, когда возникают исключения. Смотрите тему Reading and Writing Log Messages для получения дополнительной информации о том, как записывать сообщения в LogCat.
Когда Вы настроили логирование, вы можете использовать LogCat фичу DDMS для фильтрации определенных сообщений с помощью следующих кнопок:
• Warn (Все)
• Debug (Отладка)
• Info (Информация)
• Warn (Предупреждения)
• Error (Ошибки)
Вы также можете настроить свой собственный пользовательский фильтр для указания большего количества деталей, таких как фильтрация сообщений с определённым тегом и идентификатором процесса, вызвавшего сообщения лога. Кнопки add filter, edit filter и delete filter позволяют Вам управлять своими пользовательскими фильтрами.

Эмуляция операций с телефоном и навигацией
Вкладка Emulator control позволяет имитировать телефонные вызовы и данные о состоянии сети. Это полезно, когда вы хотите проверить надежность приложения в различных сетевых средах.

Изменение состояния сети, скорости и задержки
Секция Telephony Status вкладки Emulator controls позволяет изменять различные аспекты состояния телефоной сети, скорость и задержки. Следующие опции доступны для вас и вступают в силу немедленно после того, как вы установите их:
• Voice - незарегистрированные, дома, роуминг, поиска, отказано
• Data - незарегистрированные, дома, роуминг, поиска, отказано
• Speed - полный, GSM, HSCSD, GPRS, EDGE, UMTS, HSDPA
• Latency - GPRS, EDGE, UMTS

Имитация звонков или текстовых сообщений SMS
Секция Telephony Actions вкладки Emulator controls позволяет имитировать звонки и сообщения. Это полезно, когда вы хотите, чтобы проверить надежность приложения в ответ на входящие звонки и сообщения, отправленные на телефон. Следующие действия доступны для Вас:
• Voice - Введите номер в поле Incoming number и нажмите кнопку Call для отправки симуляции вызова на эмулятор или телефон. Нажмите Hang up для завершения вызова.
• SMS - Введите номер в поле Incoming number и сообщение в поле Message: и нажмите кнопку Send, чтобы отправить сообщение.

Установка местоположения
Если ваше приложение зависит от местоположения телефона, DDMS может отправлять на устройство или AVD макет местоположения. Это полезно, если вы хотите проверить различные аспекты расположения вашего приложения без физического перемещения. Следующие типы данных местоположения доступны для Вас:
• Manual - установить местоположение вручную, с указанием десятичных или шестидесятеричных значений долготы и широты.
• GPX - GPS Обмен файлами
• KML - Keyhole Markup Language файл
Для получения дополнительной информации о предоставлении макета данных о местоположении см. Location Strategies.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Использование DDMS

Сообщение rezak90 » 11 сен 2013, 22:43

Молодец, держи печенюшку за старание =) Для себя ничего нового не увидел, но надеюсь что кому то статья пригодится.
R.id.team
Политика на форуме запрещена

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Использование DDMS

Сообщение =bor= » 11 сен 2013, 22:56

Пасип за печенюшку - вовремя, как раз чай пью.))
Работа обуяла настолько, что готовое приложение на Маркет выложить уже почти месяц времени нет.((

hysteresis
Сообщения: 51
Зарегистрирован: 28 ноя 2013, 03:20
Откуда: UA

Re: Использование DDMS

Сообщение hysteresis » 02 янв 2014, 23:51

• Warn (Все)
• Debug (Отладка)
• Info (Информация)
• Warn (Предупреждения)
• Error (Ошибки)

поправочку сделай)

Ответить