Preview

Труды Института системного программирования РАН

Расширенный поиск

Прикладное применение динамического анализа программ, исполняющихся в интерпретирующих средах

https://doi.org/10.15514/ISPRAS-2017-29(1)-9

Аннотация

Сложность современного программного обеспечения постоянно растет, в связи с чем возникает потребность в автоматических инструментах выявления ошибок в разработанных программах. В рамках данной статьи мы представляем решение некоторых задач, возникающих в процессе разработки программного обеспечения. Профилирование работы программ с динамической оперативной памятью, символьное исполнение программ с графическим пользовательским интерфейсом, обнаружение ошибок в параллельных программах - небольшой, но крайне важный класс задач, решение которых востребовано индустрией разработки программного обеспечения. В связи с отсутствием в виртуальной машине Dalvik операционной системы Android стандартных средств подключения агентов, на базе которых возможно проведение динамической инструментации байт-кода, в статье рассмотрен подход к профилированию использования динамической памяти Java-программами при помощи инструмента, реализованного как модифицированная виртуальная машина Dalvik операционной системы Android. Показана обоснованность примененного подхода, приведены практические результаты анализа нескольких программ из комплекта поставки операционной системы Android. Также в статье описано решение задачи динамического символьного исполнения программ с графическим пользовательским интерфейсом с целью генерации минимальных последовательностей управляющих воздействий на пользовательский интерфейс, обеспечивающих тестовое покрытие программы на базе статической инструментации байт-кода Java-программ и модификации инструмента генерации тестовых наборов для приложений с графическим пользовательским интерфейсом GUITAR. В завершении статьи рассматривается применение особенности реализации инструмента обнаружения ошибок синхронизации параллельных программ на языке Java, исполняемых виртуальной машиной Dalvik операционной системы Android на базе статической инструментации байт-кода Java-программ и применения инструмента ThreadSanitizer.

Об авторах

С. П. Вартанов
Институт системного программирования РАН
Россия


М. К. Ермаков
Институт системного программирования РАН
Россия


А. Ю. Герасимов
Институт системного программирования РАН
Россия


Список литературы

1. Официальный анонс выпуска Android 3.0 [HTML] (http://developer.android.com/about/versions/android-3.0-highlights.html). Обращение от 01.12.2016

2. D. Bornstein. Dalvik VM internals (http://sites.google.com/site/io/dalvik-vm-internals) Обращение от 01.12.2016

3. David Detlefs, Christine Flood, Sete Heller, Tony Printezis. Garbage-first garbage collection. ISMM'4 Proceedings of the 4th international symposium on Memoty management, pp. 37-48. Vancouver, BC, Canada. October 24-25, 2004

4. Bao N. Nauyen, Bryan Robbins, Ishan Banerjee, Atif Memon. GUITAR: an innovative tool for automated testinf of GUI-driven software. Automated Software Engineering, Volutme 21, Issue 1, March 2014. pp. 65-105.

5. Willem Visser, Corina S. Pāsāreanu, Sarfranz Khurshid. Test input generation with java PathFinder. ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis. pp. 97-107. Boston, Massachusetts, USA. July 11-14, 2004.

6. Kasper Luckow, Marko Dimjašević, Dimitra Giannakopoulou, Falk Howar, Malte Isberner, Temesghen Kahsai, Zvonimir Rakamarić, Vashwanath Raman. JDart: a dynamic symbolic analysis framework. Proceedings of the 22nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems, Volume 9636. pp. 442-459. Springer-Verlang New Yor, Inc, New York, NY, USA. April 02-08, 2016.

7. С.П. Вартанов, М.К. Ермаков. Применение статической инструментации байт-кода языка Java для динамического анализа программ. Труды ИСП РАН, том 27, выпуск 1, 2015 г., стр. 25-38. DOI: 10.15514/ISPRAS-2015-27(1)-2.

8. U. Banerjee, B. Bliss, Zh. Ma, P. Petersen. Unraveling Data Race Detection in the Intel® Thread Checker. In Proceedings of STMCS ’06. Manhattan, NY, USA, 2006

9. Руководство по инструменту Sun Thread Analyzer [HTML] (http://docs.oracle.com/cd/E19205-01/820-4155/tha.html) Обращение от 01.12.2016

10. N. Nethercote and J. Seward. Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation. Proceedings of ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation (PLDI 2007), San Diego, California, USA, 2007

11. Ali Jannesari, Walter F. Tichy, Victor Pankratius, Kaibin Bao. Helgrind+: an efficient dynamic race detector. Parallel and Distributed Processing Symposium, International(2009). pp. Rome, Italy, May 23-29, 2009

12. K. Serebryany and T. Iskhodzhanov. ThreadSanitizer – data race detection in practice. WBIA '09, New York City, NY, USA, 2009

13. Ali Jannesari, Markus Westpahl-Futuya, Walter F Tichy. Dynamic data race detection for correlated variables. ICA3PP’11 Proceedings of the 11th international conference on Algorithms and architectures for parallel processing, Colume Part I. pp. 14-26. Melbourne, Austratia. October 24-26, 2011

14. E. Bruneton, R. Lenglet, T. Coupaye. ASM: a code manipulation tool to implement adaptable systems. Adaptable and extensible systems, November 2002. Grenoble, France.

15. Apache Commons Byte Code Engineering Library [HTML] (http://commons.apache.org/bcel) Обращение от 01.12.2016


Рецензия

Для цитирования:


Вартанов С.П., Ермаков М.К., Герасимов А.Ю. Прикладное применение динамического анализа программ, исполняющихся в интерпретирующих средах. Труды Института системного программирования РАН. 2017;29(1):135-148. https://doi.org/10.15514/ISPRAS-2017-29(1)-9

For citation:


Vartanov S.P., Ermakov M.K., Gerasimov A.Y. Applying dynamic analysis to programs running in interpreted environments. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2017;29(1):135-148. (In Russ.) https://doi.org/10.15514/ISPRAS-2017-29(1)-9



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)