2. Актуальность темы
Широкое распространение
мобильных устройств
Растущая популярность написания
ПО для мобильных устройств
Необходимость анализировать и
отлаживать приложения
2
3. Проблемы
Обратная отладка приложений
Отладка самого симулятора
Отладка приложений, использующих
сеть
Отладка realtime приложений
Анализ приложений
3
5. Выбор пути
Модификация Java-машины
Большой объем работы
Невозможность расширения (не получится
отлаживать линукс-приложения)
Воспроизведение только Java-приложений
Модификация симулятора Android
Возможность портирования части кода
Возможность воспроизведения всей системы
Возможность отлаживать линукс-приложения
5
6. Симулятор Android
Разработан на основе Qemu
Доступны исходные файлы
Поддержка Google
Динамическая трансляция (позволяет
работать симулятору с приемлемой
скоростью)
6
7. Структура симулятора
Hosthardware
Booted Android system
Emulated goldfish board
Emulator
Dynamic Binary
Translation
QEMUD
Services
QEMU Process
ARM CPU
stdio
Android Kernel
QEMU-
monitor
Serial
port 1
QEMUD
Multiplexer
7
8. Принцип работы
Журнал событий – своеобразный лог
недетерминированных событий,
возникающих в процессе работы
симулятора
Запись выполняется последовательно,
без индексации
8
9. Принцип работы
Запись
Выполнение инструкции
Чтение часов
Нажатие клавиш на клавиатуре
Движение мыши
Сетевые пакеты
Воспроизведение
Считывание показаний часов из журнала
Передача сообщений от клавиатуры, мыши,
звуковой и сетевой карт
Обновление внутреннего счетчика команд
9
11. Доработка симулятора
Модуль трансляции кода
Перед выполнением инструкции
выполняется код, увеличивающий счетчик
инструкций
Таймеры
При записи показания записываются в
журнал, при воспроизведении –
считываются из журнала
Аудио
Данные из микрофона записываются в
очередь и вызываются в определенное
время
11
12. Доработка симулятора
Дисплей
Прерывание обновления экрана
происходит не когда угодно, а когда в
журнале появится соответствующее
событие
Сеть
Входящие сетевые пакеты
записываются в журнал и при
возникновении необходимости берутся
не из внешней сети, а из журнала
12
13. Доработка симулятора
Модуль работы с образами дисков
Пути решения:
Записывать полученные данные в журнал
○ Большой объем данных
○ Сложность реализации
Копировать файлы и осуществлять
запись данных во временные файлы
○ Простота реализации
○ Журнал не используется
13
15. Список литературы
П.М. Довгалюк, В.А. Макаров
Обратная отладка с помощью
детерминированного
воспроизведения программ в
виртуальной машине
https://wiki.diebin.at/Under_the_hood_of
_Android_Emulator_(appcert)
15