Отладка – неизбежный этап в программировании любого приложения. Действие подразумевает обнаружение и устранение ошибок, возникших в процессе кодирования. В статье пойдет речь об инструментах для отладки программ: как ими пользоваться, с чего начинать дебагинг.
Что понадобится для дебагинга
Для работы нужны инструменты ApkTool (версия 1.4.1.) и NetBeans (версия 6.8.). Не удивляйтесь, что версии такие древние. С обновленными отладка не работает как нужно. Нетбинс устанавливается быстро - обычным кликом по запуску. Чтобы загрузить APK-тул, нужно распаковать apktool.jar (папка не имеет значения). Также не забудьте про DDMS – в Андроид SDK он предусмотрен по умолчанию.
Отлаживаем программу
Соблюдение пунктов в заданной последовательности принципиально важно, так как в любых других порядках результата не будет. Как делать отладку:
- Декодируйте apk файл (используйте АPK-тул). Для этого есть опция «-d».
- Вставьте android:debuggable=«true» в раздел application, элемент out/AndroidManifest.xml
- Скомбинируйте полученное обратно в apk.
- Назовите файл my.app.to.debug.apk.
- Дальше следует удаление out/build (функция может помешать в дальнейшем).
- Загрузите Нетбинс – «file» - «Новый проект». После этого кликните «Java» - «Java проект на существующих ресурсах».
- Там, где нужно указать адрес проекта, укажите out.
- Вставьте out/smali в проектную работу. В итоге «цепочкой» пойдут java-элементы со smali-кодировкой внутри.
- Загрузите my.app.to.debug.apk на эмуляторе, после этого – DDMS.
- В Нетбинс кликайте «Debug» - «Attach Debugger». После этого – выбор JPDA и введение комбинации 8700 в поле «Порт» (номер может отличаться). Остальные ячейки остаются прежними.
- Можете приступать к отладке. На панели Нетбинс появится соответствующая функция.
Необходима инсталляция Breakpoint на каждую инструкцию (работает только со smali-кодировкой). Поактивничайте любым способом в приложении, чтобы брикпоинт сработал. Если реакция запустилась – можете начинать отлаживание. В этом и заключается принцип дебагинга.
Возможные проблемы
Дебагинг – не такой уж и простой процесс. Как правило, с пошаговой инструкцией проблем ни у кого не возникает. Вопросы появляются на этапе установки брикпоинта, так как некоторые его ставят в начале кода. С одной стороны, это логично: если не знаешь, где ошибка – лучше начать отладку со стартовой точки. Но это не срабатывает. Причина: произошло соединение отладчика с уже работающим программным обеспечением. Это значит, что любая вставка в начале приложения бессмысленна, так как код в стартовой точке запущен в рабочем процессе.
Еще один нюанс: пока активно соединение отладчика с функционирующим ПО, программа не остановится, пока не запустится брикпоинт. Получается замкнутый круг.
Если возникают вопросы в процессе отладки, желательно ознакомиться с материалами на эту тему. Лучше всего процесс отладки объясняет Джон Роббинс в книге «Отладка приложений». Несмотря на то, что она была выпущена более 10 лет назад, принцип дебагинга с тех пор не особо изменился. Это некий «справочник», в котором представлена фундаментальная информация, после усвоения которой с багами работать проще.