Abstract

This article focuses on practical questions of performing program analysis for applications executed using interpreters and virtual machines. Using Dalvik virtual machine in Android operating system as target interpreter layer, we showcase the possibilities of program analysis through automatic execution data extraction and profiling. The article describes functional modifications for Dalvik virtual machine which allow generating extra statistics and data to be intercepted by a debugger client for further processing. We conclude with the brief overview of a set of experiments performed on a set of standard Android applications, identifying several memory usage trends; lastly, we discuss possible future improvements for the implemented system.

Highlights

  • At the present time automatic static and dynamic program analysis methods are extensively used during software development

  • Dynamic analysis methods for native applications employ external monitoring instruments and code modification in order to evaluate execution, while programs running under control of an interpreter or a virtual machine it offers a balanced observation layer – the interpreter or virtual machine itself

  • In this paper we focus on automatic memory profiling methods for Java applications running on Dalvik virtual machine – a part of rapidly growing Android operating system

Read more

Summary

Подходы к проведению анализа программ

В настоящее время в процессе разработки и сопровождения программного обеспечения значительную роль играют инструментальные средства для отладки и проведения анализа ключевых аспектов времени выполнения целевого приложения (корректное использование ресурсов, предоставляемых устройствами, и эффективность реализации алгоритмов обработки данных и выполнения заявленной функциональности). Средства инструментации кода, производящие модификацию отдельных частей программы для добавления дополнительной функциональности по взаимодействию с некоторым управляющим инструментом во время выполнения или непосредственной генерации данных во время выполнения для последующей обработки. Средства второй группы являются в высокой степени гибкими и позволяют автоматически производить сложные модификации кода целевого приложения для достижения нужного результата. В то же время системные инструменты обычно обеспечивают высокую степень изолированности от выполняемого кода и извлечение данных без влияния на ресурсы, отведённые целевому приложению во время исполнения (за исключением ресурса процессорного времени)

Анализ интерпретируемых языков
Анализ использования памяти в Java-программах
Виртуальная машина Dalvik
Протокол JDWP
Анализ памяти по слепкам кучи
Анализ памяти в режиме реального времени
Анализ памяти в Dalvik в режиме реального времени
Общая структура модификаций
События создания объекта
События освобождения памяти
События загрузки классов Java
Средство сборки и обработки данных анализа
Анализ стандартных приложений Android
Заключение
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call