Debug Android
Средства и приемы для сбора отладочной информации в системе Андройд
Вывод информации от ядра на экран
По умолчанию система Андроид скрывает вывод ядра, но его можно включить в самом ядре с помощью переменной:
CONFIG_FRAMEBUFFER_CONSOLE=y
в .config файле настройки ядра и пересобрав ядро после этого. Также нужно будет добавить следующую переменную в cmdline запуска ядра:
console=tty0
после этих процедур при запуске устройства ядро будет направлять свой вывод на экран.
dmesg
Вывод информации которую пишет ядро в консоль, после того как система стартовала вывод ядра можно посмотреть с помощью команды:
dmesg
которая является в Андроиде частью busybox или toolbox.
Аналог /var/log/messages
Очень часто хочется смотреть на уже загруженной системе вывод ядра в текущем времени, по аналогии с /var/log/messages в линуксе, в андройде это можно сделать через файл /proc/kmsg, например так:
tail -f /proc/kmsg
logcat
Мощнейший иструмент для вывода отладочной информации системы Андроид, служит команда:
logcat
Ее можно вызывать из консоли, в терминальных приложениях и через adb консоль.
Чтобы вывести только ошибки:
logcat *:E
Чтобы увеличить кол-во информации которую показывает logcat нужно задать значение в файле init.rc системы Андроид переменной loglevel с 0 до 8, чем больше значение тем больше информации будет фигурировать в логах.
У logcat есть несколько разных буфферов логирования их список видно при вызове с ключем --help. Буфферы следующие 'main', 'system', 'radio' и 'events' Например вызвав
logcat -b radio
можно посмотреть отладучную информацию радио модуля.
С помощью комманды
logcat -b events
можно увидеть uevent'ы системы, например изменения заряда батареи.
strace
Для вывода более глубокой отладочной информации по запуску определенной службы системы Андроид используется утилита strace которая является часть системы и обычно располагается в папке /system/xbin Добавать в запуск службы вывод strace, можно отредактировав файл init.rc следующим образом:
service surfaceflinger /system/xbin/strace -tt -o/data/surfaceflinger.strace /system/bin/surfaceflinger
после такой операции отладочная информация запуска сервиса surfaceflinger будет помещаться в файл surfaceflinger.strace в корне папки /data/
debugfs
Некоторые системы ядра позволяют получить дополнительную информацию о своей работе через виртуальную файловую систему debugfs, по умолчанию она не монтируется как файловые системы sysfs или procfs, подмонтировать debugfs можно следующим образом из консоли или терминала системы Андроид:
mkdir /data/debugfs mount -t debugfs debugfs /data/debugfs
после этого в папке /data/debugfs появятся каталоги и файлы по структуре похожие на procfs
dumpsys
Очень полезная андроидная утилита, выводит список активных процессов и позволять посмотреть по каждому процессу его информацию, в информации могут фигурировать различные параметры процесса и информация с которой он работает, например
$ dumpsys window
Список доступных для dumpsys сервисов, можно увидеть на первом экране если запустить dumpsys без ключей
$ dumpsys |less
ddms
Разобрался, наконец, с ним. Инфа актуальна для разработки андроид-приложений, при использовании тошибы с андроидом в качестве устройства для тестирования. Но так же можно снимать logcat с андроида непосредственно на бб.
При использовании для разработки компа с линуксом, тошиба определяется как неизвестное устройство (unknown device)
$ ./android-sdk-linux/platform-tools/adb devices List of devices attached 0000000000000000 unknown
Соответственно, тошибу нельзя выбрать как цель для запуска приложения. Для решения проблемы необходимо добавить правило в udev на ведущем компе (не на тошибе)
Для этого:
- Создаём файл:
/etc/udev/rules.d/51-android.rules
- Заполняем его:
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
- Выставляем права:
chmod a+r /etc/udev/rules.d/51-android.rules
- Не забыть включить режим Отладка Android в настройках тошибы;
После этого тошиба начнёт определяться в DDMS, можно отлаживать приложения под андроид и logcat можно смотреть непосредственно в Eclipse, например;
ATTR{idVendor}=="18d1" - это VID тошибы с цианогеном, значение соответствует производителю "Google"; Чтобы просмотреть VID, при подключенной тошибе можно выполнить $lsusb на ведущем компе;
Эта же инфа на английском
По ссылке также находится таблица VID-ов, соответсвующая производителям. 2 zombah: подозреваю, что если сконфигурировать нужный VID
Toshiba 0930
то тошка сможет подхватываться автоматом без конфигурирования udev, как это делают всякие брендовые самсунги и т.п. user:Sash0k