Abstract

This paper describes the principles of program dynamic analysis for defect detection using input data generation. Techniques of program transformation allowing execution trace extraction, data flow tracing and input data generation for execution path coverage approaches are considered. We clarify in what way such an approach allows us to perform fully automatic analysis using executable or interpretable code. This paper also presents dynamic analysis tools developed at Institute for System Programming RAS---Avalanche (Valgrind-based tool) and a prototype tool for Java applications. The paper concludes with an evaluation of practical results of applying Avalanche tool to a set of open source projects as well as results of applying Java analysis tool to detect concurrency defects.

Highlights

  • This paper describes the principles of program dynamic analysis for defect detection using input data generation

  • We clarify in what way such an approach allows us to perform fully automatic analysis using executable or interpretable code based on iterational dynamic analysis with automatic conditional branches alternation through input data generation for target program

  • This paper presents dynamic analysis tools developed at Institute for System Programming RAS---Avalanche (Valgrind-based tool) and a prototype tool for Java applications

Read more

Summary

Введение

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

Сравнение статического и динамического анализа
Обзор инструментов динамического анализа программ
Flayer
Catchconv
Применение динамического анализа для языка Java
Java PathFinder
Java ThreadSanitizer
Выводы
Итеративный динамический анализ
Способы покрытия
Определение путей выполнения
Инвертирование условий
Отслеживание потока помеченных данных
Поиск ошибок и уязвимостей
Инструмент Avalanche
Динамический анализ программ на языке Java
Заключение
Преобразование среды выполнения как альтернатива инструментации
Интеграция со статическим анализом
Full Text
Paper version not known

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

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.